lsを使用して空の代替を検索しようとしていますが、何も機能しません。ファイルのリストがあります。foo.txt
foouubar.txt
fooubbar.txt
fooubar_1.txt
foounix.txt
私はただfoo.txt
欲しいfoouubar.txt
私は試した:
ls foo\(*ubar\|\(\)\).txt
しかし、結果は空です。私のコマンドラインに問題がありますか?
私はtcshにいます。
答え1
ここで動作するソリューションがありますtcsh
。次のように中括弧拡張演算子を使用します{..}
。
$ echo foo{,uubar}.txt
foo.txt foouubar.txt
これは、文字列「foo」が交互に追加される一連の部分文字列を生成することによって行われます。この場合、最初に{,...}
試みた部分文字列が何も得られないという意味を使用します。 2番目の部分文字列は「uubar」です。
引用する
答え2
ls
パイプで使用すると、ファイルは一度に1行ずつ出力されるため、grep
他のフィルタを使用できます。したがって、次は使用されているシェルとは無関係に機能します(ただし、別の行にファイルを作成します)。
ls | egrep "foo(uubar|)\.txt"
列を復元するには:
ls | egrep "foo(uubar|)\.txt" | column