如何在目录树的最深层命名文件

Rob*_*röm 4 bash

如何使用基本的 Bash 命令和脚本在目录树的最深层命名一个随机文件?

我正在寻找一种方法,将其作为单行且没有函数来完成。还假设我从当前目录开始,然后朝着深度工作。

findgrepsedawk是可接受的命令。

我目前的尝试看起来像这样并且不起作用:

查找类型 d | 声明 COUNT=-1; 声明 P=""; 在阅读 LINE 时;做回声 $LINE; 声明C;C=$(echo $LINE | cut -c3- | sed "s/\//\n\//g" | grep '/' -c); 回声 $C; 如果 [ $COUNT -gt $C ]; 然后让 COUNT=$C; 让 P=$LINE; echo "完成"; fi; 完毕

这只会找到目录。

如何以最简单的方式解决这个问题?

Joh*_*web 10

这是一个奇怪的要求!

我会使用find+awk在最深的目录中抓取一个文件:

bash-3.2$ deepest=$(find / -type f | awk -F'/' 'NF > depth {
>     depth = NF;
>     deepest = $0;
> }
>
> END {
>     print deepest;
> }')
Run Code Online (Sandbox Code Playgroud)

${deepest}在您的mv命令中使用作为练习,但以下五行可以帮助您进一步:

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
Run Code Online (Sandbox Code Playgroud)

以下更新问题:

find -type d[...]“这只会找到目录。 [...]如何以最简单的方式解决这个问题?”。

通过提供-type ftofind来查找所有文件( f),而不是所有目录( d)。