lsが表すファイル名の一部が存在するワイルドカード。
$ ls *rammar*
London_Grammar_-_Hey_Now_Official_Video-nMEHJPuggHQ.mp4
London_Grammar_-_Hey_Now_Radio_1_s_Big_Weekend_2014-on1QEcz1sTI.webm
London_Grammar_-_Interlude_Live_on_KEXP-7eNA90LlxmY.mp4
ファイル名の他の部分にワイルドカードを使用すると、lsはそのファイルが存在しないことを意味します。
$ ls *7eNA9*
ls: cannot access `*7eNA9*`: No such file or directory
lsにはエイリアスはありません。
戻りコード(通過echo $?
):
2
男性LS:
Exit status:
2 if serious trouble (e.g., cannot access command-line argument).
中央オペレーティングシステム
7.5.1804
強く打つ
4.2.46(2)
コアツール
GNU v8.22
ベストアンサー1
シェルワイルドカードパターンは次に拡張されます。どのその名前が通常のファイル名でもディレクトリ名でも、一致する名前です。ls
コマンドラインにディレクトリ名を指定すると、その内容が一覧表示されます。
ls
forによって報告された1つ以上の名前が、パターンとls *rammar*
一致する名前を持つディレクトリから来たようです。これらのファイルの1つがls
出力の最後のファイルです。
これが2番目のコマンドを試みるとファイルが見つからない理由です。現在のディレクトリでは使用できません。
コメントの重要な要約:
私はお勧めします
find . -type f -name '*7eNA90*`
ファイルが見つかり、*7eNA90*
この場合、シェルがファイルを拡張しようとしないように(使用される)パターンを引用することが重要であると付け加えましたfind
。
@iletrasはこれを試しましたが、うまくいきましたが、彼はまたそれがうまくいくことを発見しました。いいえ引用符。現在のディレクトリにパターンと一致するものがないため、引用符なしで動作するため、シェルはパターンを拡張しません。
ただし、通常、現在のディレクトリで使用可能または使用可能な名前を常に知ったり覚えたりすることはできないため、この動作に依存する習慣を持ち上げることは危険です。一部のシェルには、一致しないパターンを空の文字列に拡張するシェルオプションもあります。nullglob
たとえば、bash
このシェルオプションを設定すると、パターンが引用されていないとコマンドは失敗します。
単にスキーマを参照する方が環境に依存するよりも安全です。