在发布这个问题的过程中,我一直在试验我的代码,我提出了一些可行的方法,但我不安的智慧想成为一个更好的程序员,而不是只是解决手头的问题,所以我发布脚本1.0和脚本1.1来问社区,为什么第3行的更改使其工作?prepend文件名,而不是目的地路径,使用mv
我从服务器复制文件并重命名它们。复制进行得很好;重命名不是。这些文件名有空格。 cp
胜任处理; mv
似乎引发错误。我期望在变量名周围放置""
来解决问题,但它仍然给出错误:mv: rename /src/foo.wav to zzz - /dest/foo.wav - copied 201403261800.wav: No such file or directory
。我试图在文件名前添加“zzz”,但它已经被预置到了目标路径。这里的脚本1.0:
cd /src/
DATE=$(date +"%Y%m%d%H%M")
find . -type f -iname "*.wav" | while read file ; do
if [[ "$file" != *zzz* ]]; then
echo "Tranferring...";
cp "$file" /dest/
mv "$file" \zzz\ \-\ "$file"\ \-\ copied\ $DATE.wav
echo "Transfer complete.";
fi
done
(该if
条件确保我不会再复制任何东西我以前复制和重命名。)
更换3号线也可以正常工作。但为什么?这里的脚本1.1:
cd /src/
DATE=$(date +"%Y%m%d%H%M")
find *.* -iname "*.wav" | while read file ; do
if [[ "$file" != *zzz* ]]; then
echo "Tranferring...";
cp "$file" /dest/
mv "$file" \zzz\ \-\ "$file"\ \-\ copied\ $DATE.wav
echo "Transfer complete.";
fi
done
这超出了我的问题的范围,这真的帮助了我。我只是测试了这一切,它都运行得很好。谢谢。 – Crowder