2012-02-23 12 views
2

linux find commnadからフォルダの名前を取得するにはどうしたらいいですか?linux findコマンドの出力ディレクトリ名

例: smil3

/root/wgetlog/smil3 
/root/wgetlog/smil5 
/root/wgetlog/smil4 

は、どのように私は、フォルダの名前だけを得るのです:

find /root/wgetlog -name -type d -empty 

Whic次の結果を生成します。

私はこのようなコマンドを持っています smil4 smil5

答えて

0

使用basename:あなたは-nameを必要としない

find /root/wgetlog -type d -empty -exec basename {} \; 

+0

仕事をdidntのこと: 検索:[-H] [-L] [-P] [パス...] [式] – Milligran

+0

@wademillsを見つける:パス式 使用の前に置く必要がありますが、 '-name'を削除しましたが? – Johnsyweb

+0

[root @ 385872-test wgetlog]#find/root/wgetlog -type d -empty -exec basename {} \ find: '-exec 'の引数がありません – Milligran

2

find /root/wgetlog -type d -empty -printf "%f\n"

+0

それは動作しませんでした – Milligran

+0

おっと、あなたの質問からコピーした名前を削除してください。 –

0

また、各パスの主要な要素をフィルタリングするためにsedを使用することができます。それはすべきではないが、

$ find /usr/bin -type d 
/usr/bin 
/usr/bin/multiarch-i386-linux 
/usr/bin/multiarch-x86_64-linux 
/usr/bin/gda_trml2pdf 
/usr/bin/gda_trml2html 
... 
$ find /usr/bin -type d | sed 's|.*/||' 
bin 
multiarch-i386-linux 
multiarch-x86_64-linux 
gda_trml2pdf 
gda_trml2html 
... 

これは、find-printfオプションを使用するよりも移植性がありますLinuxに固執すれば問題になる。

免責事項:ファイル/フォルダ名に改行があると、これはひどく失敗します。一方、このスニペットは、おそらく、その場合には失敗するだろう唯一のものではありません...

1

あなたが必要とするすべてが相対パスであれば、

{ pushd /root/wgetlog/; find . -name -type d -empty; popd; } 

は特にあなたならば、アプローチです/ root/wgetlog/*のサブディレクトリを気にしないでください。

関連する問題