![循环并提取与路径匹配的文件](https://linux22.com/image/1571506/%E5%BE%AA%E7%8E%AF%E5%B9%B6%E6%8F%90%E5%8F%96%E4%B8%8E%E8%B7%AF%E5%BE%84%E5%8C%B9%E9%85%8D%E7%9A%84%E6%96%87%E4%BB%B6.png)
我目前在一个有许多目录的目录中。
$ ls
the bad icons 100 the games icons 100
the beach & camping icons 100 the halloween icons 100
如何提取所有与以下路径匹配的 png 并将它们输出到目录中?
/{iconPackFolderName}/png/colored/512x512/*.png
答案1
你试过这个吗
mv /{iconPackFolderName}/png/colored/512x512/*.png {TargetDirectory}
如果收到文件太多且命令太长的消息,请尝试此操作
echo /{iconPackFolderName}/png/colored/512x512/*.png | xargs mv --target-directory {TargetDirectory}
答案2
由于您已经在目录中,因此您可以使用.
find:
find . -path "*/png/colored/512x512/*.png" -exec mv -t TARGETDIR {} +
如果您想先查看找到的文件,请删除-exec
后面的 and (或将其替换为| less
),find 会默认将文件名输出到 stdout,如下所示:
find . -path "*/png/colored/512x512/*.png" | less
您可能希望在覆盖之前提示mv
选项-i, --interactive
,以防出现冲突的文件名。