0

さまざまなファイル名のファイルが約2,000個あるディレクトリがあります。

文字oを含み、oの右側に6つの2つのスペースがあるすべてのファイル名を印刷する必要があります。例えば:

flow6、tro168、arrow6ish。

次のようなものを使用しますか?

find -name 'o*6'
4

2 に答える 2

3

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の詳細

于 2013-03-14T21:11:11.800 に答える
1
find . -name "*o?6*"

あなたが望むものを達成する必要があります。printfファイルがネストされたサブディレクトリに含まれている場合、これはソリューションよりも望ましい方法です。

于 2013-03-14T21:16:39.297 に答える