如何在Linux中多个目录中创建文件?

12

我只是在Linux上进行练习,但我想知道如何使用touch命令在多个目录中创建一个空文件。

例如,我有以下目录布局:

~/main
~/main/submain1
~/main/submain2
.
.
.
~/main/submainN

我该怎样让用 touch 创建的文件存在于所有的 submain 目录中?我的第一个想法是使用 cd 访问每个目录并在每次迭代中调用 touch 命令。我想知道是否有更加优雅的解决方案?

2个回答

32

这个怎么样:

find . -type d -exec touch {}/hiya \;

这适用于任何目录深度级别。

说明

find . -type d -exec touch {}/hiya \;
  • find . -type d --> 搜索目录结构中的目录。
  • -exec touch {}/hiya \; --> 对于每个结果,它的值都存储在 {} 中。因此,使用 touch {}/hiya 我们触及了那个“某些东西”/hiya。最终的 \;find子句中exec 需要的。

find使用的另一个示例:

find . -type d -exec ls {} \;

测试

$ mkdir a1
$ mkdir a2
$ mkdir a3
$ mkdir a1/a3

检查目录:

$ find . -type d
.
./a2
./a1
./a1/a3
./a3

触摸文件

$ find . -type d -exec touch {}/hiya \;

找到它们:

$ find . -type f
./a2/hiya
./hiya
./a1/hiya
./a1/a3/hiya
./a3/hiya

所有文件和目录的完整列表如下:

$ find .
.
./a2
./a2/hiya
./hiya
./a1
./a1/hiya
./a1/a3
./a1/a3/hiya
./a3
./a3/hiya

5

如果您的目录命名结构像您在现实生活中提供的示例那样编号,您可以执行以下操作:

touch ~/main/submain{1..N}/file.txt

这将把file.txt放入名为submain1到submainN的每个文件夹中。

如果它们没有按照1-N编号,您也可以尝试:

touch ~/main/{foldername,differentfolder,anotherfolder}/file.txt

这是一个比上面的解决方案更专业的解决方案,但对于初学者来说可能更易理解!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接