$ ls
abcmkde
ghemkde
vdecdde
たとえば、4番目と5番目の文字のみを含み、単一の一致が1回だけ繰り返されるファイル名のみを一覧表示しようとします(上記の例mk
では)。cd
名前が異なり、4番目と5番目の文字が異なるファイルがたくさんあります。
答え1
各タスクのためのツールとそれをまとめるシェルと呼ばれるUnix哲学を適用します。合計3つのポジションがあります。
ファイル名を一覧表示します。ファイル名に印刷できない文字や制御文字が含まれていない場合、解析された出力は
ls
合理的です。特定のファイルのみを一覧表示するには、次のものを使用できます。printf '%s\n' *.ext
1行に1つの名前をリストします。
興味のあるファイル名の部分を抽出します。 4番目と5番目の文字を抽出するには
cut -b 4,5
(シングルバイト文字の場合)またはcut -c 4,5
(マルチバイト文字の場合は許可)を使用できます。重複したアイテムを削除してください。最も簡単な方法は
sort -u
(これを行うと部品も揃います)です。
管路このプログラムに参加してください。明らかにする
ls | cut -b 4,5 | sort -u
答え2
ksh93
、または:bash
zsh
mksh
for file in *; do
printf '%s\n' "${file:3:2}"
done | sort -u