Linux:通过扩展递归将所有文件复制到单个目录

Linux:通过扩展递归将所有文件复制到单个目录

我正在尝试将所有*.tif文​​件从 ./old 复制到 ./new。在 ./old 中我有很多包含不同文件的子目录,而在 ./new 中我只需要 TIF 文件,不需要文件夹树。

所以我尝试了

cp -vR ./old/*.TIF ./new`

但出现错误:

No such file or directory "./old/*.TIF"

我做错了什么?

答案1

使用 find 来查找find . -name "*.TIF" -exec cp {} new \;

Sofind用于查找文件。该命令表示find从此处开始的文件.,文件名-name以 结尾,.tif请记住双引号以进行 shell 扩展。因此,查找所有tif文件非常简单。

find . -name "*.tif"
./2/3/3.tif
./2/2.tif
./1.tif

然后我们使用-exec对文件进行一些操作,在本例中cp找到文件{}到目标目录,new后跟转义的分号\;

答案2

它应该是这样的。你必须进入旧目录:

cd old
cp -R *.tif ../new

答案3

.tif您的目录中可能没有任何文件old

此外,您可以获取文件列表并使用简单的脚本复制它们:

find /old -type f | xargs grep *.tif 会给你一份清单。

你可以这样做:

for i in `find /old -type f | xargs grep *.tif` 
do
cp $i /new
done;

相关内容