usar o "touch" para criar directórios? [fechado]
1) no directório "A":
find . -type f > a.txt
2) no directório "B":
cat a.txt | while read FILENAMES; do touch "$FILENAMES"; done
3) resultado: o 2) "cria os ficheiros" [quero dizer apenas com o mesmo nome de ficheiro, mas com o tamanho de 0 bytes] ok. Mas se houver subdirs no diretório "A", então o 2) não pode criar os arquivos no subcir, porque não há diretórios nele.
Pergunta: existe uma maneira de que touch
possa criar diretórios?
11
2 answers
Desde que find
emite um ficheiro por linha:
cat a.txt | while read file; do
if [[ "$file" = */* ]]; then
mkdir -p "${file%/*}";
fi;
touch "$file";
done
Editar:
Isto seria um pouco mais eficiente se os directórios fossem criados numa etapa separada:
cat a.txt | grep / | sed 's|/[^/]*$||' | sort -u | xargs -d $'\n' mkdir -p
cat a.txt | while read file; do
touch "$file";
done
E, no, touch
não pode criar directórios por si só.
9
Author: thkala, 2011-01-17 09:23:42
Não. Por que não usar apenas o mkdir em vez de tocar para diretórios?
0
Author: Peter Taylor, 2011-01-17 09:08:26