我需要一种方法来将.txt或.csv文件名列表作为源,搜索目录,在该目录下有多个子目录(虽然不超过2-3个级别),并将找到的文件复制到目标文件夹。我没有成功:
for file in `cat ~/Desktop/filelist.txt`; do cp "$file" ~/Desktop; done
...而rsync也让我失望了。我知道这里有很多类似的问题,但是我找不到适合我的解决方案。
答案 0 :(得分:1)
如果您必须搜索,您可能希望在某个时候使用find
。这是一个粗略的草图:
IFS=$'\n'
for fileName in $(cat ~/Desktop/filelist.txt)
do
find \
/full/path/to/directory/to/search \
-maxdepth 3 \
-name "$fileName" \
-exec mv {} /full/path/to/destinationDirectory/ \;
done
IFS=$'\n'
部分和所有双引号都在那里,以便当列表中的某些文件的名称中包含空格时,脚本可以正常工作。反斜杠用于忽略换行符(它是循环中的一个长find
命令)。