Функция, которая создает файл в каталоге

У меня есть 4 каталога: dir1 dir2 dir3 dir4. Я хочу создать файл в каждом каталоге. Я знаю, что могу сделать это: коснитесь file1.txt, а затем переместите его в dir1, затем коснитесь file2.txt, затем переместите его в dir2, но это займет много времени. Как я могу создать функцию, которая создает текстовый файл в каждом из каталогов? Благодаря

2
задан 20 October 2019 в 15:01

2 ответа

Вы не должны создавать и затем перемещать файлы - Вы можете touch их на месте напр.

touch dir1/file1.txt dir2/file2.txt dir3/file3.txt

Это действительно не сэкономит Вам времени (или вводящий), но можно, конечно, создать функцию оболочки для этого - минимальная реализация была бы

mkfile() { touch "$1"/"$2"; }

который можно вызвать как

mkfile dir1 file1.txt

хотя, конечно, это должно действительно включать некоторую проверку / обработка ошибок (такой как, что сделать если $1 не каталог или не существует).

Если Ваш файл и структура каталогов всегда имеют форму dirN/fileN.txt затем существуют некоторые лучшие способы автоматизировать создание такой как

seq 1 3 | xargs -I{} touch dir{}/file{}.txt

или даже (использующий GNU parallel и расширение фигурной скобки)

parallel touch dir{}/file{}.txt ::: {1..3}
1
ответ дан 2 December 2019 в 04:35

Не уверенный, что Вы рассматриваете как 'возрасты'. Нет никакой функции, которая создала бы 4 файла параллельно для Вас. Принятие Вы используете удар или подобные 'самый легкий' путь, является, вероятно, циклом. например:

DIR=dir
for i in 1 2 3 4
do
  touch "${DIR}i"
done

Это довольно быстро на любой машине, которую я использую. Если Вы хотите атомарные 4 файла, создают, я боюсь, что нет никакого реального способа сделать это.

Обратите внимание, что, если существует содержание в этих 4 файлах, 'самый быстрый' путь с точки зрения задержки между первым появлением файла и последним был бы, создают файлы в другом месте и затем mv их.

0
ответ дан 2 December 2019 в 04:35

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

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