我想將所有文件移動到一個新的目錄。在命令行中我能做到「MV NEWDIR。」但如果我嘗試使用這個腳本:「mv * dir」在腳本中不起作用?
#!/bin/bash -f
#
mkdir newdir
mv *.* newdir
我得到以下信息:
mv: rename *.* to newdir/*.*: No such file or directory
我想將所有文件移動到一個新的目錄。在命令行中我能做到「MV NEWDIR。」但如果我嘗試使用這個腳本:「mv * dir」在腳本中不起作用?
#!/bin/bash -f
#
mkdir newdir
mv *.* newdir
我得到以下信息:
mv: rename *.* to newdir/*.*: No such file or directory
如果要移動的所有文件,試試這個:
的mkdir NEWDIR
發現。 -type f -exec mv「{}」newdir \;
腳本的第一行讀起來像:
#!/bin/bash -f
您傳遞-f
開關調用腳本時打壞。這會導致shell禁用文件名擴展,這也稱爲匹配或模式匹配。從shebang線刪除-f
。
另外,您應該注意,要選擇bash中的所有文件,您只需使用「*
」,而不是「*.*
」。後者將只選擇名稱中帶有點的文件。這也可能會導致您嘗試將目錄置入其中,這是無效的操作。
爲什麼不安全?.. – Juliano 2010-05-28 15:40:33
因爲「mv.newdir」試圖將當前目錄移動到子目錄中,並且沒有任何意義。 – 2010-05-28 15:45:07
可能沒有意義,它可能是無效的,但它不是不安全的。你的建議只移動文件,將目錄留在同一個地方。所以它的含義與海報試圖做的不同。 – Juliano 2010-05-28 15:51:43