我的文件夹树如下:
00 -- 0
-- 1
...
-- 9
...
99 -- 0
-- 1
...
-- 9
在每个子文件夹中创建文件的最简单方法是: /00/0/00_0.txt 并将某种数据保存到每个文件?
我尝试了 touch 和 loop ,但没有成功。 有什么想法可以使其变得非常简单吗?
答案 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[@]}"