我需要在目录中找到与已知列表匹配的文件夹并将其复制到子文件夹。
到目前为止,我已经找到了通过列表移动文件的解决方案,但我不知道如何使用文件夹名称。我可以使用 cp -R 单独移动文件夹,但不明白如何使用列表。
答案1
% mkdir subfolder {a..z} # create dirs for our test case
% ls # list them all
a/ b/ c/ d/ e/ f/ g/ h/ i/ j/ k/ l/ m/ n/ o/ p/ q/ r/
s/ subfolder/ t/ u/ v/ w/ x/ y/ z/
% list=(f o b a r) # make a list
% mv $list[@] subfolder/ # move all files in the list to subfolder
% ls subfolder # list the contents of subfolder
a/ b/ f/ o/ r/
%
(%
是我们的提示。你不应该输入这个。)
要从文本文件中读取列表:
% list=( ${(f)"$( < file )"} ) # if each name is on a separate line
% list=( ${(s:,:)"$( < file )"} ) # if they're separated by commas
%
答案2
假设你的目录列表在一个文本文件中dirs.txt
(每行一个目录名),并且你想将它们移动到文件夹subdir
。你可以发出以下bash
命令:
$ for f in `cat dirs.txt` ; do mv $f subdir; done