使用 shell 脚本复制名称中带有空格的文件

使用 shell 脚本复制名称中带有空格的文件

我正在使用此脚本将所有文件从共享目录转移到另一个目录:

cd /share
while :
do
  for allfiles in $(find /share/ -maxdepth 1 -type f -iname "*" -mmin +1);
do
  sudo mv "$allfiles" /schoolstore/
  done
  sleep 15s
done

但是,当 filen 名称中包含空格时,我会收到错误,在哪里可以修复脚本以使其适用于所有文件名?

答案1

根据我的评论中引用的其他问题,这是我的建议(未经测试)

cd /share

do
  for allfiles in $(find /share/ -maxdepth 1 -type f -iname "*" -mmin +1);
  do
    aveIFS="$IFS"; IFS=''; ls $file; 
    sudo mv "$allfiles" /schoolstore/
    IFS="$saveIFS"
  done

可能有一些方法可以优化它,我删除了while代码的一部分,因为它似乎不会停止。

不用说,在运行此类代码(或任何与此相关的代码)之前备份所有文件。

find另一种方法是,不必更改 $IFS,只需使用该标志的一个命令即可完成此操作-exec。这就是我的意思(再次,未经测试):

find /share/ -maxdepth 1 -type f -iname "*" -mmin +1 -exec mv {} /schoolstore/ \;

相关内容