~
我正在学习 Linux,我发现了一个有趣的练习。在( abc
、abc/def
、abc/xyz
、abc/def/ghi/123
、 )中创建多个目录abc/def/ghi/456
,这是一项简单的任务。之后,创建一个名为的文件1.txt
及其abc
每个子目录,将文件的路径写入其中(例如,~/abc/def/1.txt
应在其内部包含其路径)。
我尝试为每个子目录find /home/alex/abc -exec touch {}/1.txt \;
创建它,尽管希望创建我需要的文件,但这仍然是不正确的行为,因此并不好。 home/alex/DIRECTORY/1.txt/1.txt
1.txt
更大的问题是将文件路径写入每个文件1.txt
。我可以使用find /home/alex/abc -name 1.txt
来定位它们,但我不知道如何将每一行写入每个单独的文件。我一直试图用 和 来做这件事,-exec
但xargs
什么也没起作用。
那么我该怎么做呢?
答案1
如果您已经创建了目录,请执行以下操作:
find ~/abc -type d -exec sh -c 'echo "$1"/1.txt > "$1"/1.txt' _ {} \;
这会sh -c 'echo "$1"/1.txt > "$1"/1.txt'
针对每个目录(并且只针对目录,因为-type d
)运行,使用_
和目录路径作为参数。然后echo "$1"/1.txt > "$1"/1.txt
将路径 + 输出1.txt
到同名文件。这还会根据需要创建文件。