Find

xargs 執行多個命令?

  • May 11, 2022

是否可以使用xargs執行多個命令?我找到的唯一相關資訊是this question,但答案與xargs.

我正在執行一個簡單的

du / -ah | sort -r -n | head -n 10 |  awk '{print $2}'

查找佔用磁碟空間最多的文件。但是,它也返回目錄,我只想刪除文件以保留任何結構。

我厭倦了使用find命令,因為我不確定是否可以按磁碟使用情況而不是文件大小進行搜尋。

任何輸入將不勝感激!

您可以使用find僅獲取正常文件並du為它們執行。下面的命令會抑制標準錯誤,因為如果您對根目錄執行此操作,則可能會對某些特殊目錄產生一些抱怨。這裡-h同時用於dusort,這有利於對顯示文件大小進行排序。

find / -type f -exec du -h {} + 2>/dev/null | sort -hr | head | cut -f2-

換行符也用作上述命令的文件分隔符。進入 GNU shell 的安全方法是使用空字節來分隔參數,例如:

find / -type f -exec du -h0 {} + 2>/dev/null | sort -zhr | head -z | cut -zf2- | xargs -r0 <some command to run for the 10 biggest files>

對於您的情況(/以任何使用者身份搜尋),只需列印文件及其大小,然後決定要做什麼。不要將結果直接發送到rm --.

也可以看看:

引用自:https://unix.stackexchange.com/questions/701983