Shell

通過管道到“sort”命令對“find -print0”的輸出進行排序

  • August 23, 2021

find在將輸出傳遞給命令之前,我需要能夠按字母順序對輸出進行排序。輸入| sort |之間不起作用,那我該怎麼辦?

find folder1 folder2 -name "*.txt" -print0 | xargs -0 myCommand

像往常一樣使用find並用 NUL 分隔你的行。GNUsort可以使用 -z 開關處理這些問題:

find . -print0 | sort -z | xargs -r0 yourcommand

某些版本sort有一個-z選項,允許以空值結尾的記錄。

find folder1 folder2 -name "*.txt" -print0 | sort -z | xargs -r0 myCommand

此外,您還可以編寫一個高級腳本來執行此操作:

find folder1 folder2 -name "*.txt" -print0 | python -c 'import sys; sys.stdout.write("\0".join(sorted(sys.stdin.read().split("\0"))))' | xargs -r0 myCommand

添加-r選項以xargs確保myCommand使用參數呼叫它。

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