Um aplicativo para criar arquivos e pastas a partir de uma determinada estrutura

Um aplicativo para criar arquivos e pastas a partir de uma determinada estrutura

Eu vi um aplicativo para Mac chamado Structurer (aqui um vídeohttp://www.youtube.com/watch?v=kXRjneFTs6Q) que deu uma estrutura de arquivos e pastas como esta:

/folder1
/folder2
  /file1
  /folder2.1
    /file2.1

criará esses arquivos e pastas em um local existente.

Existe algo assim para o Ubuntu, ou como posso construir um script de shell para obter algo assim?

Se for possível seria legal também poder criar arquivos usando templates.

Responder1

A parte complicada é que você tem arquivos e pastas mostrados da mesma maneira e não há uma maneira simples de diferenciá-los. Para o arquivo 2.1 não há como saber se ( /folder2/folder2.1/file2.1) é na verdade uma pasta ou um arquivo dentro da pasta2.1.

Sim, sua descrição diz a palavra, *file*então sabemos que você quer dizer arquivo, mas para um programa, como isso poderia dizer? Um programa pode diferenciar arquivos de caminhos porque um é seguido no mesmo nível de indentação por outra entrada. MAS, isso leva a um conjunto de regras complicadas e confusas.

Eu sugiro que você use uma palavra-chave ou apenas nomes completos e qualificados. O mais fácil é:

/pasta1/

/pasta2/

/pasta2/arquivo1

/pasta2/pasta2.1/

/pasta2/pasta2.1/arquivo2.1

A barra final significa "Esta é uma pasta e não um arquivo". Então você pode ter um script fácil como este para criar sua estrutura de diretórios. Alguns avisos sobre este script.

  1. os diretórios de nível superior devem ser criados primeiro.
  2. Eu acrescento um "." ao caminho para que todos os diretórios criados sejam relativos àquele em que o script é executado.
  3. Não cometo nenhum erro ao verificar o conteúdo do arquivo dir/path.
#!/bin/sh -v
#
# builds a directory and file structure.
# directories must exists before referenced or file in the directory declared.
#
# sample input looks like (without the leading #):
# /folder1/
# /folder2/
# /folder2/file1
# /folder2/folder2.1/
# /folder2/folder2.1/file2.1
#
# make sure we have our one and only input parameter.
if [ $# != 1 ]; then
        echo "Usage: `basename $0` input_file_name"
        echo "input_file_name contains absolute dir paths with a trailing slash,"
        echo "or absolute file path/name with no trailing slash."
        exit 1
fi

# get the file name from the command line
FILE=$1

# make sure the input parameter specifies a file.
if [ ! -e ${FILE} ]; then
        echo "Sorry, the file ${FILE} does not exist."
        exit 1
fi

for LINE in $(cat $FILE)
do
        LAST=$(echo ${LINE} | awk -F/ '{print $(NF)}')
        # if file ends with a slash, this value is blank, if it is no slash, this is the file name.
        if [ "${LAST}XXX" = "XXX" ]; then
                # is empty, so it is directory, future feature to check exist already
                mkdir ".${LINE}"
        else
                # is not empty, so it is a file
                touch ".${LINE}"
        fi
done
exit 0

Isso criará os diretórios e arquivos conforme mostrado no arquivo de entrada. Se o script for chamado create.she você o tiver chmod 755 create.sh, o comando ./create.sh datagerará seus diretórios e arquivos conforme descrito no arquivo de dados.

informação relacionada