Создайте файл в каждом подкаталоге и запишите в него его путь

Я изучаю 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 в файл с именем того же. Это также создаст файлы по мере необходимости.

Другие вопросы по тегам