このスクリプトを使用して、共有ディレクトリ内のすべてのファイルを別のディレクトリに転送します。
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
ただし、ファイル名にスペースが含まれているとエラーが発生します。すべてのファイル名で動作するようにスクリプトをどこで変更する必要がありますか?
答え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を変更する代わりに、対応するフラグを持つ1つのコマンドを変更するだけです-exec
。私が意味するものは次のとおりです(もう一度言いますが、テストされていません)。
find /share/ -maxdepth 1 -type f -iname "*" -mmin +1 -exec mv {} /schoolstore/ \;