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