在多个目录中创建多个文件

时间:2018-12-04 07:22:09

标签: linux bash console

我的文件夹树如下:

00 -- 0
   -- 1
   ...
   -- 9
 ...
99 -- 0 
   -- 1
   ...
   -- 9

在每个子文件夹中创建文件的最简单方法是: /00/0/00_0.txt 并将某种数据保存到每个文件?

我尝试了 touch loop ,但没有成功。 有什么想法可以使其变得非常简单吗?

2 个答案:

答案 0 :(得分:0)

您可以使用find,然后使用-exec

运行命令
find . -type d -maxdepth 2 -mindepth 2 -exec bash -c 'f={};
cmd=$(echo "${f}/${f%/*}_${f##*/}.txt"); touch $cmd' \;

bash替换${f%/*}_${f##*/}/替换最后一个_

答案 1 :(得分:0)

使用glob列出所有目录。使用sed修改列出的路径,以使37/4成为37/4/37_4.txt。使用touch为所有修改的路径创建空文件。

touch $(printf %s\\n */*/ | sed -E 's|(.*)/(.*)/|&\1_\2.txt|')

即使12/3只是一个占位符,并且您的实际路径类似于abcdef/123,此方法也有效。但是,当您的路径包含任何特殊符号(例如空格,*?)时,它将失败。

要处理任意路径名,请使用以下命令。它甚至支持路径名中的换行符。

mapfile -td '' a < <(printf %s\\0 */*/ | sed -Ez 's|(.*)/(.*)/|&\1_\2.txt|')
touch "${a[@]}"