如果我運行命令mv folder2/*.* folder
,我得到「參數列表太長」的錯誤。移動大量文件
我找到ls
和rm
的一些例子,處理這個錯誤,使用find folder2 -name "*.*"
。但我很難將它們應用到mv
。
如果我運行命令mv folder2/*.* folder
,我得到「參數列表太長」的錯誤。移動大量文件
我找到ls
和rm
的一些例子,處理這個錯誤,使用find folder2 -name "*.*"
。但我很難將它們應用到mv
。
find folder2 -name '*.*' -exec mv {} folder \;
-exec
運行任何命令,{}
插入找到的文件名,\;
標誌着exec命令的末尾。
感謝您的回答,我想知道有多少文件可以移動。什麼是文件計數的限制mv工作。 – Thunder 2017-12-02 03:00:10
find folder2 -name '*.*' -exec mv \{\} /dest/directory/ \;
另一個find
可以解決問題,但對於大量文件來說速度非常慢,因爲它們爲每個文件執行一個命令。一個更有效的方法是要麼在find
結尾使用+
,或使用xargs
:
# Using find ... -exec +
find folder2 -name '*.*' -exec mv --target-directory=folder '{}' +
# Using xargs
find folder2 -name '*.*' | xargs mv --target-directory=folder
同意通常,但如果一個直的'mv'產生一個「參數列表太長」的錯誤,我懷疑一個就像使用'find'建立的很長時間一樣。 – 2012-08-13 22:33:42
我不知道我關注。這就是'find'結尾的'+'的全部。如果你使用它,'find'的行爲與'find |行爲完全一致xargs'組合。 – Idelic 2012-08-14 14:09:53
當OP嘗試一次移動所有文件時,Shell出錯。 'find'和'xargs'最終都會運行相同的shell命令來實際執行此操作,因此它們可能也會出錯。這就是爲什麼我建議一次一個的方法,即使它比較慢。 – 2012-08-14 15:11:08
這個問題被提出和回答在這裏S.O.每週一次。請在提問前瞭解如何搜索。祝你好運。 – shellter 2012-08-13 21:21:31
@shellter我發現了一些類似的例子,但正如我所說的,它們都是'ls'和'rm'的例子。 – DrXCheng 2012-08-13 21:25:38
@shellter,如果有這麼多的玩家,找到一個並投票結束。 – 2012-08-13 22:36:19