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