поэтому я знаю, как создать несколько каталогов одновременно, например...
mkdir -p tree/{dir1,dir2,dir3}
но как мне создать каталог и положить в него файлы одновременно? В конечном итоге я хочу сделать это во многих одновременно.
решение1
Единой команды для этого не существует, но вы можете создать свою собственную:
mkpath(){ mkdir -p ${1%/*} && mkfile 0 $1; }
который может быть вызван с одним аргументом, указывающим путь к файлу, который будет создан. Любые каталоги, которые должны быть созданы по пути, будут созданы, и в этот момент создается пустой файл с указанным именем файла, например
mkpath dir1/dir2/dir3/file.txt
Примечание: Это пример функции, которая не была тщательно протестирована для удовлетворения различных входов и ситуаций. Для обеспечения надежности может потребоваться подходящее отлавливание ошибок.
Поскольку он наследует особенности своих компонентов, функций mkdir
и mkfile
, две важные характеристики переносятся в mkpath
то, что он имеет в своем нынешнем виде:
- Кажется безопасным указать путь, включающий уже существующие каталоги, и эти каталоги и их содержимое будутнетбыть перезаписаны;
- И наоборот, если файл существует в указанном месте, онволябудет перезаписан пустым файлом, и восстановить старое содержимое файла будет невозможно.