2016-07-21 185 views
2

我該如何執行以下命令?這是下面的僞代碼,我有:如何刪除unix中的X文件

ls -U | head -4 < rm * 

我想刪除以下四個文件

[email protected]:/tmp$ ls -U | head -4 
c9e5aff2-f4f6-459e-9752-466625165fa0.jpg 
815626f8-2650-4596-94b9-796a82780390.jpg 
b9259a6b-b421-4b64-ba4d-72fd632703a3.jpg 
78c243e7-43df-417d-9dcf-a4578f1c1f20.jpg 
+2

這將永遠不會工作。那會將'rm'的輸出重定向爲'head'的輸入。 'ls | head -4 | xargs rm' xargs接受它的標準輸入並把它變成指定命令的命令行參數。 –

+1

'ls -U'按目錄順序列出文件,這實質上是任意的。你確定這是你想使用的標準嗎? –

+0

請注意,如果任何文件名包含空格或某些其他特殊字符,則兩個當前答案都可能失敗。 –

回答

3

xargs了應該做的伎倆:

$ ls -U | head -4 | xargs rm 
+0

儘管迄今爲止列出的兩種解決方案都有效,但這是優越的解決方案,因爲xargs會將先前命令的輸出流式傳輸到下一個 –

+1

@AmirAfghani的輸入中。我的回答並不意味着要在電腦的性能上競爭,但如果你的記憶力和我的一樣糟糕,那麼這樣做會節省時間。編寫for循環通常比獲取StackOverflow更快,並且確定如何去做。 :P –

2

如果你不記得慶典語法簡單for循環往往像一個魅力:

for file in `ls -U | head -4`; do rm $file; done