descompactando recursivamente todos os arquivos xlsx em um novo diretório contendo o nome dos arquivos originais

1

Eu tenho um monte de arquivos excel que eu gostaria de extrair recursivamente de todos os subdiretórios, mantendo o nome do diretório / arquivo como o novo nome do diretório para todos os arquivos extraídos de cada xlsx.

para extrair um arquivo que eu encontrei isso . Infelizmente meu conhecimento bash carece de habilidade para que tudo em um comando.

Então, tentei dividi-lo em partes menores primeiro:

for z in ./*
do name="${z%%_*}"; dest=".${name//[ .-]/}"; mkdir "$dest";
done

se eu tentar que o * em

for z in ./*

procura por todos os arquivos no diretório atual e não como se eu tivesse antecipado o resultado de

find . -name "*.xlsx"

então eu tentei se eu pudesse reverter isso:

for f in | find . -name "*.xlsx"; do d="${f}"; mkdir -p "$d"

mas obviamente não funciona porque o meu encanamento está errado

    
por aldr 09.06.2017 / 13:18

1 resposta

1

Não sei se sua divisão com bash está correta.

Porque parei de trabalhar com o bash há muito tempo.

Mas quando você quiser a saída de encontrar em um loop, tente isto:

find . -name '*.xlsx' -print0 |
    while IFS= read -r -d $'
find . -name '*.xlsx' -print0 |
    while IFS= read -r -d $'%pre%' z; do
        name="${z%%_*}" 
        dest=".${name//[ .-]/}" 
        mkdir "$dest"
    done
' z; do name="${z%%_*}" dest=".${name//[ .-]/}" mkdir "$dest" done
    
por 09.06.2017 / 13:40

Tags