さまざまなファイル名のファイルが約2,000個あるディレクトリがあります。
文字oを含み、oの右側に6つの2つのスペースがあるすべてのファイル名を印刷する必要があります。例えば:
flow6、tro168、arrow6ish。
次のようなものを使用しますか?
find -name 'o*6'
ls
(スレッドの前半で提案されているように)出力を解析せず、代わりにこれを試してください:
printf '%s\n' *o?6*
例 :
$ ls -1
arrow6ish
flow6
o6
oaaaaaaaaa6
tro168
$ printf '%s\n' *o?6*
arrow6ish
flow6
tro168
結果に対してコマンドを実行する必要がある場合、最も簡単な方法は次のとおりです。
commandX *o?6*
それがすべてグロブの魔法です。
また、再帰が必要な場合は、
find . -type f -name '*o?6*'
ls
は、ファイル情報をインタラクティブに表示するためのツールです。その出力は人間向けにフォーマットされており、スクリプトにバグが発生します。代わりにグロブを使用するか、検索してください。理由を理解する:http://mywiki.wooledge.org/ParsingLs
globの詳細
find . -name "*o?6*"
あなたが望むものを達成する必要があります。printf
ファイルがネストされたサブディレクトリに含まれている場合、これはソリューションよりも望ましい方法です。