2010-05-28 54 views
0

我想將所有文件移動到一個新的目錄。在命令行中我能做到「MV NEWDIR。」但如果我嘗試使用這個腳本:「mv * dir」在腳本中不起作用?

#!/bin/bash -f 
# 
mkdir newdir 
mv *.* newdir 

我得到以下信息:

mv: rename *.* to newdir/*.*: No such file or directory 

回答

1

如果要移動的所有文件,試試這個:

的mkdir NEWDIR

發現。 -type f -exec mv「{}」newdir \;

+0

爲什麼不安全?.. – Juliano 2010-05-28 15:40:33

+0

因爲「mv.newdir」試圖將當前目錄移動到子目錄中,並且沒有任何意義。 – 2010-05-28 15:45:07

+0

可能沒有意義,它可能是無效的,但它不是不安全的。你的建議只移動文件,將目錄留在同一個地方。所以它的含義與海報試圖做的不同。 – Juliano 2010-05-28 15:51:43

2

腳本的第一行讀起來像:

#!/bin/bash -f 

您傳遞-f開關調用腳本時打壞。這會導致shell禁用文件名擴展,這也稱爲匹配或模式匹配。從shebang線刪除-f

另外,您應該注意,要選擇bash中的所有文件,您只需使用「*」,而不是「*.*」。後者將只選擇名稱中帶有點的文件。這也可能會導致您嘗試將目錄置入其中,這是無效的操作。