![/ etcでsで始まる3文字のファイルをすべてリストする方法は? [コピー]](https://linux33.com/image/183981/%2F%20etc%E3%81%A7s%E3%81%A7%E5%A7%8B%E3%81%BE%E3%82%8B3%E6%96%87%E5%AD%97%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E3%81%99%E3%81%B9%E3%81%A6%E3%83%AA%E3%82%B9%E3%83%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AF%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
/ etcでsで始まる3文字のファイルをすべてリストする方法は?
そんなことはありません。
ls -d /etc/s*
または
ls -d /etc/s%%
私が探しているのは、3つの手紙ファイルがすべてあるからです。
編集* ls -d /etc/s??
できますか?他の2文字を意味し、その後に「s」が続きます。ありがとう
答え1
最初はs??パターンが 's' で始まる 3 文字に対して正確ですが、 s?? はグローバル式であり、シェルがそれを一致する項目に拡張することです。私の場合、/etcに/etc/sshと/etc/sslという2つのフォルダがありました。これは提案されたコマンドを意味します。
ls -d /etc/s??
シェルによって次に展開されます。
ls -d /etc/ssh /etc/ssl
次に、-dがlsに指示されているように、ディレクトリー名自体のみをリストします。残念ながら、-dを省略すると、/ etcの下にある3文字ディレクトリの内容が一覧表示されます。これも望む内容ではありません。
findを使用したいかもしれませんが、再帰的に検索しないで(-max深さ1)、ファイル(-type f)とパターン 's??'(-name is ?? ')と一致する名前を見つけるように指示します。
find /etc -maxdepth 1 -type f -name 's??'
また、パターンを一重引用符で囲みました。これにより、シェルが検索前に一致するファイルに検索パターンを拡張するのを防ぐことができます。