crie um arquivo em cada subdiretório e escreva seu caminho nele

0

Estou estudando Linux e encontrei um exercício interessante. Crie um número de diretórios em ~ ( abc , abc/def , abc/xyz , abc/def/ghi/123 , abc/def/ghi/456 ), que é uma tarefa fácil. Depois disso, crie um arquivo chamado 1.txt in abc e cada um de seus subdiretórios, gravando o caminho dos arquivos para eles (por exemplo, ~/abc/def/1.txt deve conter seu caminho dentro de si mesmo).

Eu usei find /home/alex/abc -exec touch {}/1.txt \; , que tentou criar home/alex/DIRECTORY/1.txt/1.txt para cada um dos subdiretórios, embora, esperançosamente, crie os arquivos 1.txt de que preciso, mas ainda é um comportamento incorreto e, portanto, não é bom.

O maior problema é escrever o caminho do arquivo para cada um desses 1.txt . Eu posso usar find /home/alex/abc -name 1.txt para localizar cada um deles, mas não tenho idéia de como escrever cada linha separada para cada arquivo separado. Eu tenho tentado fazer isso com -exec e xargs , mas nada funcionou.

Então, como posso fazer isso?

    
por Alex F 01.10.2017 / 19:17

1 resposta

2

Se você já criou os diretórios, faça:

find ~/abc -type d -exec sh -c 'echo "$1"/1.txt > "$1"/1.txt' _ {} \;

Isso executa sh -c 'echo "$1"/1.txt > "$1"/1.txt' para cada diretório (e apenas diretórios, por causa de -type d ), com _ e o caminho para o diretório como argumentos. Então echo "$1"/1.txt > "$1"/1.txt gera o caminho + 1.txt para um arquivo com o mesmo nome. Isso também criará os arquivos conforme necessário.

    
por muru 01.10.2017 / 19:25