展平文件夹结构

努诺斯

我有这个文件夹结构:

├── foo1
│   ├── bar1.txt
│   └── bar2.txt
├── foo2
│   ├── bar3.txt
│   └── bar4 with a space.txt
└── foo3
    └── qux1
        ├── bar5.txt
        └── bar6.txt

我想在每个文件夹级别之间加一个下划线:

├── foo1_bar1.txt
├── foo1_bar2.txt
├── foo2_bar3.txt
├── foo2_bar4 with a space.txt
├── foo3_qux1.bar6.txt
└── foo3_qux1_bar5.txt

我四处张望,没有找到任何可行的解决方案,主要是因为我的问题有两个特点:根目录中可能存在多个文件夹级别,而且某些文件中可能包含空格。

知道如何在bash中完成此操作吗?谢谢!

编辑:运行格伦杰克曼建议答案我得到这个:

在此处输入图片说明

一级文件夹有两个下划线。任何想法如何避免这种情况或只是对其重命名,以便仅是一个下划线?谢谢。

格伦·杰克曼
find */ -type f -exec bash -c 'file=${1#./}; echo mv "$file" "${file//\//_}"' _ '{}' \;

echo如果满意,请删除不必担心echo'ed命令不会显示引号,该脚本将正确处理带有空格的文件。

如果要删除现在空的子目录:

find */ -depth -type d -exec echo rmdir '{}' \; 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章