文件夹和子文件夹直到现在,当我想我一直在使用一个包含完整路径列表,并使用从列表中收集的文件:的bash shell:递归搜索从列表
cat pathlist.txt | xargs -I % cp % folder
不过,我想就像能够递归搜索文件夹和它的子文件夹并复制纯文本列表中的文件名(不是完整路径)中的所有文件一样。
我该怎么做呢?
谢谢!
文件夹和子文件夹直到现在,当我想我一直在使用一个包含完整路径列表,并使用从列表中收集的文件:的bash shell:递归搜索从列表
cat pathlist.txt | xargs -I % cp % folder
不过,我想就像能够递归搜索文件夹和它的子文件夹并复制纯文本列表中的文件名(不是完整路径)中的所有文件一样。
我该怎么做呢?
谢谢!
试着这么做
find folder_to_search -type f | grep -f pattern_file | xargs -I % cp % folder
您似乎在xargs cp中存在问题,复制/粘贴错误? – tripleee
完美!我很感谢每个人的帮助,而且对其他人没有冒犯性,但是迈克尔的回答立刻对我最有意义......并且更重要的是马上工作了。 –
举起来是有问题的。我需要它只抓取完全匹配的文件,如果不跳过它们。现在,如果我在列表中有一个名为123456.tif的文件,并且该文件夹中没有匹配的文件,它就会抓取23456.tif。我怎样才能解决这个问题? –
使用find命令。
while read line
do
find /path/to/search/for -type f -name "$line" -exec cp -R {} /path/to/copy/to \;
done <plain_text_file_containing_file_names
假设:
在列表中的文件有标准名称没有,说他们在新行或特殊字符。
注:
如果在列表中的文件具有非标准文件名,TT将是不同的球赛。欲了解更多信息,请参阅find manpage并寻找-print0
。总之,你应该使用空字符串来操作。
假设您的文件名列表包含裸文件名,因为它适合作为参数传递给find -name
,您可以做到这一点。
sed 's/^/-name /;1!s/^/-o /' pathlist.txt |
xargs -I % find folders to search -type f \(% \) -exec cp -t folder \+
如果您cp
不支持-t
选项源前指定目标文件夹,或者您find
不支持-exec ... \+
你将需要适应这一点。
只是为了解释这是怎么回事就在这里,输入
test.txt
radish.avi
:
被插入到
find folders to search -type f \(-name test.txt -o -name radish.avi \
-o name : \) -exec cp -t folder \+
使用find命令。 – 123
你想从哪里找到文件夹?当前目录以及将文件复制到哪里?提供示例 – Inian