2008-01-24

[メモ]シェルでファイル名を数字でソート(2桁まで)

2桁までの数字のついたファイルfile**.txtをgrepしたい。ただし、ファイルについている番号順にgrepをかけていきたい。
そういう場合は、ワイルドカード{?,??}を使うと、数字順にソートした上で処理できる。(1の次が10にならないようにソートできる。)

grep searchword file{?,??}.txt


ただし、lsコマンドでファイル一覧を表示する場合は、lsコマンドがデフォルトで名前でのソートを行うので、-vをつけないといけない。
[ayu@home]~/tmp% ls -l -v file{?,??}.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file1.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file2.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file3.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file4.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file5.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file6.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file7.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file8.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file9.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file10.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file11.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file12.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file13.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file14.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file15.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file16.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file17.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file18.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file19.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file20.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file21.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file22.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file23.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file24.txt
-rw-r--r-- 1 ayu ayu 0 Jan 24 11:28 file25.txt