find 中的print0会使用nul字符来做分割结果。 xargs中又-0参数,可以获取结果。
find . -type f -print0 | xargs -0 -I {} mv {} {}.bak
一些复杂的处理可以用while+read来做
/usr/bin/find /usr/dirName -type f -mtime 0 \
| while read LINE; do
cp -rf "$LINE" /home/BackupDirName
done
我处理sony 505阅读器里的文件,为了防止丢书,需要给每个文件名前加个英文字符。
find . -type f | while read line;do d=$(dirname "$line");f=$(basename "$line"); mv "$line" "${d}/a.$f";done
排下版,注意对line需要加引号。
find . -type f \
| while read line;do
d=$(dirname "$line");
f=$(basename "$line");
mv "$line" "${d}/x.$f";
done