在每个子目录中创建一个文件并将其路径写入其中

在每个子目录中创建一个文件并将其路径写入其中

~我正在学习 Linux,我发现了一个有趣的练习。在( abcabc/defabc/xyzabc/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.txt1.txt

更大的问题是将文件路径写入每个文件1.txt。我可以使用find /home/alex/abc -name 1.txt来定位它们,但我不知道如何将每一行写入每个单独的文件。我一直试图用 和 来做这件事,-execxargs什么也没起作用。

那么我该怎么做呢?

答案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到同名文件。这还会根据需要创建文件。

相关内容