
Estou limpando uma enorme biblioteca de mangás (principalmente - mas não apenas - arquivos de imagem). Cada mangá possui uma pasta principal contendo subpastas, uma para cada volume.
Mas às vezes as pastas de volume contêm apenas arquivos de imagem e outras vezes contêm subpastas.
Eu gostaria de um script que, para a pasta de mangá selecionada:
- verifique quais pastas de volume possuem subpastas
- nivelar a estrutura de diretórios das pastas de volume com subpastas. Em vez de colocar todas as imagens na pasta pai e apagar as subpastas, gostaria de criar uma nova pasta na área de trabalho e copiar todas as imagens das subpastas nela.
- renomeie a pasta criada na área de trabalho após sua pasta pai original
Antes :
pasta_manga
volume1_folder subfolder1 / image1, image2, image3 subfolder2 / image4, image5, image6 subfolder3 / image7, image8, image9 volume2_folder image1, image2, image3, image4, image5, image6, image7, image8, image9 volume3_folder subfolder1 / image1, image2, image3 subfolder2 / image4, image5, image6 subfolder3 / image7, image8, image9
Depois:
Área de Trabalho:
volume1_folder image1, image2, image3, image4, image5, image6, image7, image8, image9 volume3_folder image1, image2, image3, image4, image5, image6, image7, image8, image9
As pastas originais devem permanecer intactaspara que eu possa verificar se há arquivos perdidos, etc.
No momento, eu uso um AppleScript que nivela a estrutura de diretórios de cada pasta de volume selecionada. Ele cria uma nova pasta dentro, com o nome de sua pasta pai, com todas as imagens copiadas dentro.
O que não acontece:
- verifique quais pastas de volume possuem subpastas (tenho que selecionar cada pasta de volume individualmente e iniciar o script a cada vez)
- mova a pasta criada com estrutura de diretórios achatada para a área de trabalho
Eu tentei implementar as alterações sozinho, mas poderia mover a nova pasta para a área de trabalho ou renomeá-la com base na pasta pai. Ao colocar as duas instruções (qualquer que seja colocada primeiro), ocorreria um erro dizendo que não foi possível encontrar a pasta após executar a primeira instrução. Aqui está o roteiro:
tell application "Finder"
set theTopFolder to (selection as alias)
set theFiles to a reference to every file of (entire contents of folder theTopFolder)
set theNewFolder to make new folder at theTopFolder with properties {name:"Flattened Files"}
duplicate theFiles to theNewFolder
set name of theNewFolder to name of theTopFolder
--move theNewFolder to "Macintosh HD:Users:xx:Desktop:"
end tell
Responder1
tell application "Finder"
repeat with f in (get folders of (POSIX file "/Users/username/manga_folder" as alias))
make new folder at desktop with properties {name:(get name of f)}
duplicate files of entire contents of f to result
end repeat
end tell
Você também pode usar um comando shell como este:
cd ~/manga_folder;for d in *;do mkdir ~/Desktop/"$d";find "$d" -type f|while read f;do cp "$f" ~/Desktop/"$d";done;done
Ou se você tiver GNU cp:
cd ~/manga_folder;for d in *;do mkdir ~/Desktop/"$d";find "$d" -type f -exec gcp -t ~/Desktop/"$d" {} +;done