2017-04-27 35 views
2

我想在我的主目錄中找到以'〜'開頭的文件,按數字排序,打印前五個並使用Linux中的find命令和管道刪除它們。我有一個bash腳本:在linux中使用管道和find命令

#!/bin/bash 
find ~/ -name "~*" | sort -n | head -5 | tee | xargs rm 

這工作正常刪除的文件,但我期待tee命令來刪除的文件打印到標準輸出。所有這個命令的作用是刪除文件,但在終端輸出。我應該添加/更改什麼? 謝謝。

+0

'tee'命令的用途是什麼? – hek2mgl

+0

你知道一個管道消耗stdout,對吧? –

+0

我不明白,管與第二的是標準輸入連接第一個命令的標準輸出,但我認爲這是可能以某種方式防止以'因爲它是一個提示,我在講課了tee'命令 – Luki

回答

3

你可以只使用於RM冗餘標誌,它會告訴你什麼它刪除

find ~/ -name "~*" | sort -n | head -5 | xargs rm -v 

使用man rm看到文檔

-v,--verbose

解釋正在做什麼

+0

我用這個解決方案,因爲它很短,並且完全符合我的想象:)謝謝。 – Luki

+0

沒問題,很高興我可以幫助:)。 – Danny

+0

是的它很短,但只有當你100%確定文件名不包含空格或水平字符時才使用它。 – anubhava

3

你可以使用rm -v打印每刪除文件名:

find ~ -name '~*' -print0 | sort -zn | head -z -n 5 | xargs -0 rm -v 

還要注意使用-print0sort. head, xargs所有相應的選項,以解決與空白和水珠字符的文件名。

+0

不知道'head'支持'-z'標誌 – hek2mgl

+0

我相信只有gnu'head'支持'-z' – anubhava