2017-03-17 64 views
0

我想將ls的輸出放入head並將其管入mv。用xargs移動文件

我在終端上使用了下面的命令,但它不能正常工作。

ls -t Downloads/ | head -7 | xargs -i mv {} ~/cso/ 

請糾正錯誤。提前致謝!

+0

爲什麼它不能正常工作?什麼是預期的和實際的結果是什麼? –

+0

這是一個糟糕的任務。你不應該把'ls'的輸出傳送給任何*,除了可能是'less'這樣的尋呼機。 – chepner

+0

另外,'ls'輸出的第一行不是文件名。 – chepner

回答

1

使用-I喜歡這裏:

ls -t Downloads/* | head -7 | xargs -I '{}' mv '{}' ~/cso/ 
+0

它不工作。 輸出如下: MV:不能STAT 'SingleCycleCPUDesign.pdf':沒有這樣的文件或目錄 MV:不能STAT 'MIPS-assembly.tar':沒有這樣的文件或目錄 MV:不能STAT「MIPS_Vol2。 pdf':沒有這樣的文件或目錄 mv:can stat'MIPS_Vol1.pdf':沒有這樣的文件或目錄 mv:can stat'MIPS32_QRC.pdf':沒有這樣的文件或目錄 mv:can stat'MIPS-Assembly。 ppt':沒有這樣的文件或目錄 mv:不能統計'L06-SMIPS.pdf':沒有這樣的文件或目錄 – blazingeagle

+1

在剛纔編輯的'Downloads /'後添加*。如果它回答您的查詢,請將其標記爲答案。 –

+0

現在工作得很好。非常感謝@Exception_al – blazingeagle

3

這是有據可查的解析ls輸出不推薦。您可以使用這種安全方法使用find + sort + cut + head + xargs管道:

find . -maxdepth 1 -type f -printf '%[email protected]\t%p\0' | 
sort -z -rnk1 | 
cut -z -f2 | 
head -z -n 7 | 
xargs -0 -I {} mv {} ~/cso/