2015-10-24 28 views
-2

我創建了一個非常簡單的腳本(終端命令),但由於某些原因文件在mv後消失。所有帶有「mv:rename ........:沒有這樣的文件或目錄」的文件消失了......但是另一方面,其他文件被正確移動(雖然在移動之間沒有區別)。我做錯了什麼?使用mv命令的Mac腳本導致某些文件從機器中消失

$ ls 2015-10-21_JUNK/*.JPG | awk -F"/" '{print $NF}' | awk -F"." '{print $1}' | awk '{print "mv 2015-10-21/"$1".NEF 2015-10-21_JUNK"}' | sh -x 

+ mv 2015-10-21/DSC_8297.NEF 2015-10-21_JUNK 
mv: rename 2015-10-21/DSC_8297.NEF to 2015-10-21_JUNK/DSC_8297.NEF: No such file or directory 
+ mv 2015-10-21/DSC_8298.NEF 2015-10-21_JUNK 
mv: rename 2015-10-21/DSC_8298.NEF to 2015-10-21_JUNK/DSC_8298.NEF: No such file or directory 
+ mv 2015-10-21/DSC_8302.NEF 2015-10-21_JUNK 
mv: rename 2015-10-21/DSC_8302.NEF to 2015-10-21_JUNK/DSC_8302.NEF: No such file or directory 
+ mv 2015-10-21/DSC_8305.NEF 2015-10-21_JUNK 
mv: rename 2015-10-21/DSC_8305.NEF to 2015-10-21_JUNK/DSC_8305.NEF: No such file or directory 
+ mv 2015-10-21/DSC_8307.NEF 2015-10-21_JUNK 
+ mv 2015-10-21/DSC_8316.NEF 2015-10-21_JUNK 
+ mv 2015-10-21/DSC_8317.NEF 2015-10-21_JUNK 
+ mv 2015-10-21/DSC_8322.NEF 2015-10-21_JUNK 
+ mv 2015-10-21/DSC_8323.NEF 2015-10-21_JUNK 
+ mv 2015-10-21/DSC_8325.NEF 2015-10-21_JUNK 
+ mv 2015-10-21/DSC_8330.NEF 2015-10-21_JUNK 
+ mv 2015-10-21/DSC_8336.NEF 2015-10-21_JUNK 
+ mv 2015-10-21/DSC_8337.NEF 2015-10-21_JUNK 
+ mv 2015-10-21/DSC_8338.NEF 2015-10-21_JUNK 
+ mv 2015-10-21/DSC_8339.NEF 2015-10-21_JUNK 
+ mv 2015-10-21/DSC_8341.NEF 2015-10-21_JUNK 
+ mv 2015-10-21/DSC_8343.NEF 2015-10-21_JUNK 
+ mv 2015-10-21/DSC_8346.NEF 2015-10-21_JUNK 
mv: rename 2015-10-21/DSC_8346.NEF to 2015-10-21_JUNK/DSC_8346.NEF: No such file or directory 
+ mv 2015-10-21/DSC_8347.NEF 2015-10-21_JUNK 
mv: rename 2015-10-21/DSC_8347.NEF to 2015-10-21_JUNK/DSC_8347.NEF: No such file or directory 
+ mv 2015-10-21/DSC_8353.NEF 2015-10-21_JUNK 
mv: rename 2015-10-21/DSC_8353.NEF to 2015-10-21_JUNK/DSC_8353.NEF: No such file or directory 
+ mv 2015-10-21/DSC_8355.NEF 2015-10-21_JUNK 
mv: rename 2015-10-21/DSC_8355.NEF to 2015-10-21_JUNK/DSC_8355.NEF: No such file or directory 
+ mv 2015-10-21/DSC_8358.NEF 2015-10-21_JUNK 
+ mv 2015-10-21/DSC_8361.NEF 2015-10-21_JUNK 
+0

看起來像你搬家(重命名)或刪除目標目錄的方式。 – tripleee

+0

你解析了'ls'的輸出,這幾乎總是一個壞主意 - 你應該考慮使用'find ... print0'來代替,所以你可以在文件名中容納空格。 –

+0

請[請正確格式化您的代碼](http://meta.stackexchange.com/a/22189/248777)。 – mklement0

回答

0

這是更簡潔,更高效的方式來完成您的任務。

for f in 2015-10-21_JUNK/*.JPG; do 
    f=${f##/}  # Strip the leading directory 
    f=${f%%.*JPG} # Strip everything after the first . 
    mv 2015-10-21/"$f".NEF 2015-10-21_JUNK 
done