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

Я изучаю 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, но ничего не получилось.

Итак, как я могу это сделать?

0
задан 1 October 2017 в 20:17

3 ответа

Если вы уже создали каталоги, выполните следующие действия:

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

2
ответ дан 22 May 2018 в 17:56
  • 1
    'echo " $ 1 "/1.txt' - это правильно. Ваш эхо-сигнал «/directory.txt" ;, но должен быть« /directory/1.txt" ;. Тем не менее, спасибо. – Alex F 2 October 2017 в 17:32
  • 2
    @AlexF ах, извините. Слишком много. – muru 2 October 2017 в 21:56

Если вы уже создали каталоги, выполните следующие действия:

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

2
ответ дан 18 July 2018 в 05:55

Если вы уже создали каталоги, выполните следующие действия:

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

2
ответ дан 24 July 2018 в 18:28

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

Похожие вопросы: