#linux #shell #xargs
#linux #оболочка #xargs
Вопрос:
У меня много каталогов. Мне нужно cd
открыть все каталоги и создать 2 файла. Я пытался сделать это с помощью xargs, но у меня не получилось. Не могли бы вы рассказать мне, как этого добиться?
Комментарии:
1. у вас есть эти два файла? являются ли эти два файла одинаковыми для всех папок?
2. @Prince: Да.. У меня есть только два файла, и это будет то же самое
3. пустой файл или в нем есть содержимое? можете ли вы поделиться именем файлов
4. Что вы пробовали, и как это не удалось?
Ответ №1:
Если вы не хотите или не должны запускать find
, но у вас есть список каталогов, что-то вроде этого:
xargs -i touch {}/a {}/b <directories.txt
Если пути к каталогам полностью регулярны (например, все подкаталоги на два уровня ниже), это может быть так же просто, как
touch */*/a */*/b
Комментарии:
1. Спасибо.. Это сработало.. Теперь еще одно сомнение.. извините за беспокойство.. Мне нужно перейти ко всем подкаталогам в каталоге и выполнить эту команду «smt pull»..
2. Вероятно, вам следует задать отдельный вопрос.
for d in */.; do ( cd "$d"; smt pull ) done
Ответ №2:
find <path> -type d -exec touch {}/a {}/b ;
путь может быть. если вы уже находитесь в верхнем каталоге, над которым вам интересно работать.
Комментарии:
1. Это из bash с поиском из GNU findutils
2. опечатка … не удалось передать путь
3. В моей версии find вам не нужно передавать путь, по умолчанию используется текущий. Я могу кому-нибудь отредактировать его.
4. По крайней мере, в Linux по умолчанию
.
используется значение, если вы его не предоставляете.5. @tripleee: По крайней мере, я не знаю этого факта.