我正在使用此脚本将所有文件从共享目录转移到另一个目录:
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/ \;