在〜/ Desktop / a /中,我有.png文件,并且其中的子文件夹中也有.png文件。
我想将所有这些.png文件移动到另一个文件夹中。
到目前为止,这是我的代码。它可以运行,但是没有任何东西放置在目标文件夹中。有什么问题吗?
#!/bin/bash
cd ~/Desktop/a/
for f in $(find . -type f -name "*.png")
do
mv $f ~/Desktop/new/
done
答案 0 :(得分:2)
我想这些图像文件名可能包含空格或其他特殊字符。
find ~/Desktop/a/ -type f -name "*.png" -exec mv "{}" ~/Desktop/new/ \;
或
find ~/Desktop/a/ -type f -name "*.png" -print0 | xargs -0 -I{} mv "{}" ~/Desktop/new/
答案 1 :(得分:1)
如果您的bash足够新,则也可以使用globstar
:
cd ~/Desktop/a || exit 1
shopt -s globstar
mv -- **/*.png ~/Desktop/new
或者(如果文件太多而无法在单个命令行中容纳):
shopt -s globstar
for f in ~/Desktop/a/**/*.png; do
mv -- "$f" ~/Desktop/new
done