1

コマンドラインはかなり新しいので、ご容赦ください。

/usr/localその末尾に番号が付いたディレクトリを見つけることになっています。次のようにして、ディレクトリだけをリストすることができました。

ls -d */

しかし、配管を介して何かを使用しようとすると:

find -name
grep
look

出力は表示されません。検索に「*」ワイルドカードを使用してみましたが、何も表示されません。

私が間違っているアイデアはありますか?

4

5 に答える 5

1

find コマンドは、あなたが望むことを行うことができるはずです。

find / -type d -name <directory_name>

これにより、ルート ディレクトリから指定した名前のディレクトリが検索されます。上記のようにコマンドを実行した場合、検索を開始するディレクトリを指定していなかったことが欠陥だと思います。他のパラメーターを指定する必要がある場合は、man ページも使用できます。

http://unixhelp.ed.ac.uk/CGI/man-cgi?find

于 2013-03-27T23:28:02.143 に答える
1
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/localfindfind

find /usr/local -maxdepth 1 -type d -name '*[0-9]'

(-maxdepth 1最後に置くと、 のいくつかのバージョンはfindそれについて気取って文句を言います。)

于 2013-03-28T00:07:02.263 に答える
0
find "/path/to/some/dir/*[0-9]" -type d -maxdepth 1
于 2013-03-27T23:57:38.607 に答える
0
ls -l /path/to/some/dir | grep "^d" | awk '{print $9}'
于 2013-03-27T23:58:51.860 に答える
0
for file in /path/to/some/dir/*; do \
    if [[ -d $file ]]; then \
        echo $file; \
    fi \
done
于 2013-03-28T00:00:18.460 に答える