ディレクトリの後にスラッシュを表示しますか?


19

ディレクトリの後に検索コマンドにスラッシュを表示するにはどうすればよいですか?たとえば、の代わりdirに表示したいです。私は使っていますdir/dirfind . -print

回答:


10

移植性:

find . -type d -exec sh -c 'printf "%s/\n" "$0"' {} \; -or -print

ディレクトリとファイルを個別にリストする場合(ソートにより出力をマージできます):

{ find . -type d -print | sed 's!$!/!'; find . \! -type d; } | sort

GNU findについては、Shawn J. Goffの回答をご覧ください。

端末に出力しない場合でも、印刷できない文字が破損するリスクがある場合は、ddeimekeの回答を参照してください。

zshの中:print -rl -- **/*(DM)Dドットファイルを含めるにM追加する/ディレクトリの後)


最初のコマンドは末尾のスラッシュを出力しませんでしたが、2番目のコマンドは出力します。
スティーブン

15
find . \( -type d -printf "%p/\n" , -type f -print \)

これは、printfコマンドを使用して、残りのディレクトリ名と標準印刷をフォーマットします。


検索の柔軟性に引き続き驚かされます。
ショーンJ.ゴフ

1
-printfGNU findに固有のものであることに注意してください。
ジル「SO-悪をやめろ」

いい答えだ。方法が好きfind位置引数が、それはこのような高度な出力を行うことができさん。ただし、コンマの前後にスペースがないと機能しません。
ジンプ

1
この答えとGilles 'に基づいて、次の簡易バージョンを思い付きました。 find . -type d -printf '%p/\n' -or -print
テレサ・電子ジュニア

8

多分

find . -print0 | xargs -0 ls -Fd

同様にオプションです。

Solarisのマニュアルページから:

-F末尾にスラッシュ(/)、末尾に大なり記号(>)が付いたドア、末尾にアスタリスクが付いた実行可能ファイル(*)、末尾に縦線(|)が付いたFIFO、末尾に "アット」記号(@)、および末尾に等号(=)が付いたAF_UNIXアドレスファミリソケット。オペランドとして指定されたシンボリックリンクに従います。


@Gilles:「d」をありがとう;-)
ddeimeke

これにより、システムコールの量が増加します
パウェウポルビッチ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.