对不起,我太天真了,我真的很纠结。
我有一个像这样的目录
dir
|--folder1
| |--- subfolder1
| |--- ...
| |--- subfolder100
|
|--folder2
|--- subfolder1
|--- ...
|--- subfolder100
每个文件夹和子文件夹都包含扩展名为".fq.gz">
的文件。我想列出所有这些文件,然后把它们复制到我的目标文件夹
destination=/path/to/folder/
我已经试过了,但它不适合我,我不知道为什么
ls -R | grep ".fq.gz" | xargs -I {} cp {} "$destination"
错误是目录
中没有这样的文件解释哪里出了问题的最好方法是查看实际馈送到xargs
的内容。
ls -R | grep ".fq.gz"
这将给你一个没有路径的文件列表,所以
file1.fq.gz
file2.fq.gz
...
和
folder1/subfolder3/file1.fq.gz
folder2/subfolder7/file2.fq.gz
...
这就是为什么它不起作用。
这类操作的工具当然是find
,如
find dir -name '*.fq.gz' -exec cp {} "$destination" ; -print
您可以立即使用bash
的globstar
选项(需要bash
版本4.0或更新),而无需使用任何外部命令:
shopt -s globstar
cp **/*.fq.gz "$destination"