我只是在Linux上进行练习,但我想知道如何使用touch
命令在多个目录中创建一个空文件。
例如,我有以下目录布局:
~/main
~/main/submain1
~/main/submain2
.
.
.
~/main/submainN
我该怎样让用 touch
创建的文件存在于所有的 submain
目录中?我的第一个想法是使用 cd
访问每个目录并在每次迭代中调用 touch
命令。我想知道是否有更加优雅的解决方案?
这个怎么样:
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
如果您的目录命名结构像您在现实生活中提供的示例那样编号,您可以执行以下操作:
touch ~/main/submain{1..N}/file.txt
这将把file.txt放入名为submain1到submainN的每个文件夹中。
如果它们没有按照1-N编号,您也可以尝试:
touch ~/main/{foldername,differentfolder,anotherfolder}/file.txt