基本的なBashコマンドとスクリプトを使用してディレクトリツリーの最も深いレベルで任意のファイル名を指定するにはどうすればよいですか?
関数なしで1行のコードでできる方法を探しています。また、現在のディレクトリから始めて下に作業しているとします。
find
、grep
およびsed
はawk
許可されるコマンドです。
現在の試みは次のとおりですが、機能しません。
検索 - d |宣言COUNT = -1;宣言 C=$(echo $LINE | s/\// \n \//g" | grep '/' -c); echo $C; if [ $COUNT -gt $C ]; then let COUNT=$C ; let P=$LINE; echo "complete";
これによりディレクトリのみが検索されます。
最も簡単な方法でこの問題を解決するには?
ベストアンサー1
変なお願いですね!
最も深いディレクトリにあるファイルをインポートするには、find
+を使用します。awk
bash-3.2$ deepest=$(find / -type f | awk -F'/' 'NF > depth {
> depth = NF;
> deepest = $0;
> }
>
> END {
> print deepest;
> }')
${deepest}
コマンドで使用するmv
ことは練習用ですが、次の5行を使用するとより役に立ちます。
bash-3.2$ echo "${deepest}"
/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Argentina/Buenos_Aires.rb
bash-3.2$ echo "${deepest%.*}"
/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Argentina/Buenos_Aires
bash-3.2$ echo "${deepest%/*}"
/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/America/Argentina
bash-3.2$ echo "${deepest##*/}"
Buenos_Aires.rb
bash-3.2$ echo "${deepest##*.}"
rb
以下の質問が更新されました。
find -type d
[...]」これによりディレクトリのみが検索されます。[...] この問題を最も簡単な方法で解決するには? 」。
-type f
供給することによってfind
すべて検索文書( f
)、すべてではない目次(d
)。