引数を渡さないときに `ls -d` で `.` の表示をスキップする方法はありますか?

引数を渡さないときに `ls -d` で `.` の表示をスキップする方法はありますか?

コマンドを にfind実行した結果があります。一致するファイルがない場合、次のようになります:xargsls -d

.

デフォルトでは以下が表示されるため、これが唯一の出力となりますls -d

.

...、(ファイル名) 引数が指定されていない場合。引数を渡さずに出力を表示しない場合にls -dを省略する方法はありますか?.

アップデートls -d:表示しないように説得することはできない.:

.

ls -d -A\                # Skip implied
   --hide=.\             # No, really, skip implied
   --ignore=.            # I mean it, damn it!

.

:)

答え1

xargsと一緒に使うのはfind、いかにも 1980 年代っぽいですね...

電話例:

find . -type d -exec ls -d {} + 

ls コマンドは引数なしで呼び出されることはありません。

execplus 機能はfind1989 年に David Korn によって SVr4 用に追加されました。

答え2

タグ付けしたなので、おそらく GNU xargs を実行するでしょう。これには以下のオプションがあります:

-r, --no-run-if-empty
    If the standard input does not contain any nonblanks, do not run the command. 

ではfind ... | xargs -r ls -d、何も一致しないls場合はまったく開始されません。find

find明示的に一致する可能性があります.。これを回避するには、! -name .検索式に追加します。または、-mindepth 1(GNU find では) を使用して、コマンド ラインで指定されたパスのいずれかに一致しないようにしますfind

ls(無視させる方法については.、私にはわかりません。)

関連情報