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