Bash - Mover recursivamente todos os arquivos em pastas com nome dado para seu diretório pai

0

Eu tenho uma biblioteca de documentos onde todos os meus arquivos estão em pastas com base no nome da categoria, mas eles também estão todos em subpastas chamadas 'pdf' também. Existe uma maneira no bash para examinar todos os diretórios da biblioteca e mover todos os arquivos em pastas chamadas pdf para o diretório pai?

    
por portlandRyan 03.05.2013 / 21:45

2 respostas

2

O seguinte move cada arquivo de uma pasta pdf para o diretório pai.

find ~/some/folder -type d -name 'pdf' -print0 | while IFS= read -d '' dir
do
  find "$dir" -type f -maxdepth 1 -exec echo mv -- {} "$dir"/.. \;
done

Remova o echo quando tiver certeza de que faz o que você precisa.

Observe que isso substituirá os arquivos sem perguntar quando o pai já contém um com o mesmo nome. Use mv -i para solicitar confirmação antes de sobrescrever qualquer coisa.

    
por 03.05.2013 / 22:08
1

Aqui está o que eu pensei. Não é a coisa mais bonita, mas funciona de acordo com suas especificações:

find . -ipath "*pdf/*.pdf" -type f -print0 | xargs -0 -I{} sh -c 'mv "{}" "$(dirname "{}")"/..'

Ele move apenas .pdf arquivos em pdf subpastas para seus diretórios pai correspondentes. Para alterar o comando para mover todos arquivos em pdf subpastas, ajuste o argumento ipath para *pdf/* .

Exemplo de uso

$ find .
.
./category1
./category1/other_dir
./category1/other_dir/c1o1.txt
./category1/pdf
./category1/pdf/c1p1.pdf
./category1/pdf/c1p2.pdf
./category1/pdf/c1p3.pdf
./category2
./category2/other_dir
./category2/other_dir/c2o1.txt
./category2/pdf
./category2/pdf/c2p1.pdf
./category2/pdf/c2p2.pdf
./category2/pdf/c2p3.pdf

$ find . -ipath "*pdf/*.pdf" -type f -print0 | xargs -0 -I{} sh -c 'mv "{}" "$(dirname "{}")"/..'
.
./category1
./category1/c1p1.pdf
./category1/c1p2.pdf
./category1/c1p3.pdf
./category1/other_dir
./category1/other_dir/c1o1.txt
./category1/pdf
./category2
./category2/c2p1.pdf
./category2/c2p2.pdf
./category2/c2p3.pdf
./category2/other_dir
./category2/other_dir/c2o1.txt
./category2/pdf
    
por 03.05.2013 / 22:25

Tags