Linux sort 排序並取代原始檔案

Linux Bash shell 常常會使用到 sort、uniq 等等的指令,而這些通常會使用暫存檔來處理~

想要檔案排序後,覆蓋掉原始檔案,可以使用:sort file > tmp; mv tmp file

有沒有更快的作法呢?

Linux sort 排序並取代原始檔案

上面使用的是 tmp 當暫存檔,不過 tmp 這些檔名可能會不小心衝突到,所以通常會改良成下述:

  • sort file > file.$$ && mv file.$$ file

$$ 是 Shell 的 PID,所以暫存檔名會是 file.$PID~

不過,若是 sort 的話,自身就有帶 -o 的命令,而且是可以取代自身檔案內容是沒問題的~

  • sort -o file file

若資料夾內有多個檔案要 sort,就可以一行全做:

  • for f in *; do sort -o $f $f; done

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料