Используя "touch" для создания каталогов?
1) в каталоге "A":
find . -type f > a.txt
2) в каталоге "B":
cat a.txt | while read FILENAMES; do touch "$FILENAMES"; done
3) Результат: 2) "создает файлы" [я имею в виду только с тем же именем файла, но с размером байта 0). Но если в каталоге "А" есть поддиры, то 2) не может создавать файлы в поддире, потому что в нем нет каталогов.
Вопрос: есть ли способ, чтобы touch
мог создавать каталоги?
Ответы
Ответ 1
Так как find
выводит один файл в строке:
cat a.txt | while read file; do
if [[ "$file" = */* ]]; then
mkdir -p "${file%/*}";
fi;
touch "$file";
done
EDIT:
Это будет немного более эффективно, если каталоги, созданные на отдельном шаге:
cat a.txt | grep / | sed 's|/[^/]*$||' | sort -u | xargs -d $'\n' mkdir -p
cat a.txt | while read file; do
touch "$file";
done
И, нет, touch
не может создавать каталоги самостоятельно.
Ответ 2
Нет. Почему не просто использовать mkdir вместо touch для каталогов?