find コマンドは ls -p と同じです。

find コマンドは ls -p と同じです。

必要探すコマンドで生成された出力はls -p生成された出力とまったく同じですか?

find /path/to/ -mindepth 1 -maxdepth 1 -exec basename {} \;ディレクトリに末尾のスラッシュがないため、末尾のスラッシュがある場合は出力フォルダ名が必要です。

出力例:

folder 1/
my-file-1.sh

探すコマンドは、フルパスなしでディレクトリの内容を一覧表示し、後にスラッシュがあるフォルダを一覧表示します。

答え1

$ find /path/to -mindepth 1 -maxdepth 1 -exec sh -c '
     [ -d "$1" ] && printf "%s/\n" "${1##*/}" || printf "%s\n" "${1##*/}" ' _ {} \;
aDirectory/
afile

説明する:

  • [ -d "$1" ]、これは次のようになります。目次そうであれば、次のコマンドを実行してくださいprintf

    printf "%s/\n" "${1##*/}"
    

    それ以外の場合は、次のように実行しますprintf

    printf "%s\n" "${1##*/}"
    
    • ${1##*/}*:ファイル/ディレクトリパスの要求から始まり、最後のスラッシュまですべてのエントリのうち最も長い一致を削除し、最後のディレクトリ//ファイル名のみを生成します。

答え2

少なくともGNU findを使用すると、組み込み-printf機能を使用できます。

find . -mindepth 1 -maxdepth 1 -type d -printf '%f/\n' -o -type f -printf '%f\n'

関連情報