lsの違い - 見つかったと見つかりません(対応するファイルまたはディレクトリなし) - 同じファイルにあります

lsの違い - 見つかったと見つかりません(対応するファイルまたはディレクトリなし) - 同じファイルにあります

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コマンドラインにディレクトリ名を指定すると、その内容が一覧表示されます。

lsforによって報告された1つ以上の名前が、パターンとls *rammar*一致する名前を持つディレクトリから来たようです。これらのファイルの1つがls出力の最後のファイルです。

これが2番目のコマンドを試みるとファイルが見つからない理由です。現在のディレクトリでは使用できません。


コメントの重要な要約:

私はお勧めします

find . -type f -name '*7eNA90*`

ファイルが見つかり、*7eNA90*この場合、シェルがファイルを拡張しようとしないように(使用される)パターンを引用することが重要であると付け加えましたfind

@iletrasはこれを試しましたが、うまくいきましたが、彼はまたそれがうまくいくことを発見しました。いいえ引用符。現在のディレクトリにパターンと一致するものがないため、引用符なしで動作するため、シェルはパターンを拡張しません。

ただし、通常、現在のディレクトリで使用可能または使用可能な名前を常に知ったり覚えたりすることはできないため、この動作に依存する習慣を持ち上げることは危険です。一部のシェルには、一致しないパターンを空の文字列に拡張するシェルオプションもあります。nullglobたとえば、bashこのシェルオプションを設定すると、パターンが引用されていないとコマンドは失敗します。

単にスキーマを参照する方が環境に依存するよりも安全です。

おすすめ記事