在發佈這個問題的過程中,我一直在試驗我的代碼,我提出了一些可行的方法,但我不安的智慧想成爲一個更好的程序員,而不是隻是解決手頭的問題,所以我發佈腳本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