Script Bash para criar vários diretórios e subdiretórios

4

Atualmente, estou usando os dois scripts a seguir para criar vários diretórios e subdiretórios. O primeiro script cria '/ Dir1 / Dir2' e o segundo script adiciona vários subdiretórios a 'Dir2'.

#!/bin/bash
# Creates directories and subdirectories from text file
cat *.txt | xargs -L 1 mkdir -p 

#!/bin/bash
# Lists all directories in current working directory and create subdirectories 
LIST='ls -D'
for i in $LIST;
do
mkdir -p $i"/Dir3/Dir4/"
done

Combinei os dois scripts, mas os subdiretórios Dir3 e Dir4 são criados em Dir1 e não em Dir2 como pretendido. Com meu conhecimento muito limitado de scripts, não consigo pesquisar com êxito a resposta e, portanto, pedir ajuda a você.

    
por ludicerZA 14.08.2012 / 20:29

1 resposta

7

É difícil dizer o que você está tentando fazer, mas acho que isso é o que você quer:

#!/bin/bash

cat *.txt | while IFS= read -r line; do
    mkdir -p -- "$line/Dir3/Dir4"
done

Isso lerá todos os arquivos .txt no diretório atual e criará uma pasta com o caminho ./<line from file>/dir3/dir4 .

Se isso é o que você queria que acontecesse, o motivo pelo qual não estava funcionando é que $(ls -D) listará apenas os arquivos no diretório atual. Não irá recorrer aos subdiretórios. Portanto, mesmo que o primeiro script tenha criado um diretório dir1/dir2 , o segundo script só verá o diretório dir1 .

    
por Alex L. 14.08.2012 / 22:01

Tags