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

标签 linux bash console

我有像这样的文件夹树:

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

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

我尝试了触摸循环,但没有成功。 有什么想法可以让它变得非常简单吗?

最佳答案

使用 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[@]}"

关于linux - 在多个目录中创建多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53607654/

相关文章:

linux - 如何在 LESS 中找到 "/*"?

c++ - 将 SetPixel 坐标转换为控制台上的像素

javascript - 如何阻止用户从控制台执行javascript代码?

windows - 从 MINGW 启动时运行 System32 程序而不是 SysWOW64

javascript - 如何删除 axios 中的控制台错误?

c - errno: 38 (Function not implemented) 在调用更改 sysctl 值时

c - sparc_do_fork() 究竟做了什么?

linux - 在高级时间逻辑 Linux 中设置一个 cron

linux - 用于调用 bash 命令的文本编辑器模式

linux - 如何在变量上添加参数?