コマンドラインはかなり新しいので、ご容赦ください。
/usr/local
その末尾に番号が付いたディレクトリを見つけることになっています。次のようにして、ディレクトリだけをリストすることができました。
ls -d */
しかし、配管を介して何かを使用しようとすると:
find -name
grep
look
出力は表示されません。検索に「*」ワイルドカードを使用してみましたが、何も表示されません。
私が間違っているアイデアはありますか?
コマンドラインはかなり新しいので、ご容赦ください。
/usr/local
その末尾に番号が付いたディレクトリを見つけることになっています。次のようにして、ディレクトリだけをリストすることができました。
ls -d */
しかし、配管を介して何かを使用しようとすると:
find -name
grep
look
出力は表示されません。検索に「*」ワイルドカードを使用してみましたが、何も表示されません。
私が間違っているアイデアはありますか?
find コマンドは、あなたが望むことを行うことができるはずです。
find / -type d -name <directory_name>
これにより、ルート ディレクトリから指定した名前のディレクトリが検索されます。上記のようにコマンドを実行した場合、検索を開始するディレクトリを指定していなかったことが欠陥だと思います。他のパラメーターを指定する必要がある場合は、man ページも使用できます。
find /usr/local -type d -name '*[0-9]'
これにより、すべてが 1 つにまとめられます。/usr/local/
名前が数字で終わるディレクトリを探します(そして暗黙的に結果を出力します)。
を使用するコードls
は、次のようにする必要がある場合があります。
cd /usr/local || exit 1
ls -d */ | grep '[0-9]/$'
これにより、名前の末尾にスラッシュが付いたディレクトリが一覧表示されるため、数字の後にスラッシュと名前の末尾が続く名前を検索する必要があります。find
これとコマンドの違いの 1 つは、ディレクトリ階層を検索するのに対し、ls
すぐにディレクトリを一覧表示することです。階層を下に検索したくない場合は、次のように言います。/usr/local
find
find
find /usr/local -maxdepth 1 -type d -name '*[0-9]'
(-maxdepth 1
最後に置くと、 のいくつかのバージョンはfind
それについて気取って文句を言います。)
find "/path/to/some/dir/*[0-9]" -type d -maxdepth 1
ls -l /path/to/some/dir | grep "^d" | awk '{print $9}'
for file in /path/to/some/dir/*; do \
if [[ -d $file ]]; then \
echo $file; \
fi \
done