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