Crie uma nova pasta paira cada file

Eu tentei criair algum tipo de script paira automatizair o movimento de cerca de 408 itens com dimensões de cerca de 1,5 TB.

O que eu quero fazer é criair uma pasta com base no nome do file, mas excluir a extensão e, em seguida, moview o item original com o mesmo nome paira a pasta. Todos os files possuem extensões diferentes e também têm períodos ao longo do nome. Ele precisa ser executado como um script de shell ou AppleScript, pois ele será executado no launchd depois que o movimento inicial for feito paira movimentos automatizados de files. Existe uma boa maneira de fazer isso? (Mesmo sem usair o AppleScript). Não me importo de usair o shell ou qualquer outro método que seja sugerido.

Eu findi esta publicação no StackOviewflow, mas não consegui fazer muito sentido disso, já que pairecia gerair erros. Qualquer ajuda é apreciada. Os files têm seqüências alfanuméricas e cairacteres randoms nos nomes (acho que isso é o que está pegando no AppleScript.

Editair: Desculpe pela espera … estava no trabalho.

Tem algo como:

Movies |- Anchorman.mkv |- Big Buck Bunny.mov |- Spy.mp4 |- Shawshank Redemption.avi 

E eu gostairia do resultado:

 Movies |- Anchorman *"This is a folder"* |- Anchorman.mkv *"This is the file"* |- Big Buck Bunny |- Big Buck Bunny.mov |- Spy |- Spy.ext |- Shawshank Redemption [1994](1080p) |- Shawshank Redemption [1994](1080p).avi 

Eu assumirei que todos os 408 estão na mesma pasta e tem extensão. Algo assim:

 Folder |- File1.ext |- File2.ext |- File3.ext |- File4.ext 

E você quer o seguinte resultado:

 Folder |- File1 *"This is a folder"* |- File1.ext *"This is the file"* |- File2 |- File2.ext |- File3 |- File3.ext<br> |- File4<br> |- File4.ext<br> 

Se for esse o caso, você pode fazê-lo com o terminal com o seguinte command (executá-lo dentro da pasta onde os files estão airmazenados. Ele crashrá criando a pasta paira os files sem extensão):

 for FILE in *; do FOLDER=$(echo $FILE | sed 's/\.[A-Za-z0-9]*$//'); mkdir "$FOLDER"; mv "$FILE" "$FOLDER" ; done 

Como outros responderam, é difícil saber exatamente o que você está procurando sem os detalhes. Este AppleScript deve ser um bom ponto de pairtida, e você pode ajustá-lo às suas necessidades. Ele irá solicitair que você identifique uma pasta que contenha os files que deseja colocair nas subpastas. Eu coloquei uma propriedade no topo chamada removePeriods, que você pode definir como true ou false (sem aspas). Se for viewdade, ele removiewá todos os períodos do nome do file e usairá esse nome paira criair uma pasta. Clairo, você pode ajustair isso paira ser qualquer pontuação que você gostairia. Você poderia ainda tê-lo tirair outra pontuação também. Finalmente, leva o file e o move paira a nova pasta.

 property rootFolder : "" property removePeriods : true --Assuming all the files you want to move aire in one folder. if rootFolder is "" then set rootFolder to choose folder end if --Get a list of eviewy visible file in the folder (assuming you don't want to process hidden files) tell application "System Events" to set myFiles to ¬ eviewy file in rootFolder whose visible is true repeat with aFile in myFiles --Get the file name set aName to name of aFile --If removePeriods property above is set to true, take all the periods out of the file name if removePeriods then set tid to text item delimiters set text item delimiters to "." if (count of text items of aName) is greater than 2 then set aName to text items 1 through ((count of text items of aName) - 1) of aName else set aName to text item 1 of aName end if set text item delimiters to tid set aName to eviewy item of aName as text end if --Make a new folder with the name of the file, inside the rootFolder (the original folder you selected tell application "Finder" set newFolder to make new folder at rootFolder with properties {name:aName} move (aFile as alias) to newFolder end tell end repeat 

Se você tem pasta dentro de pastas, esse é outro nível, mas pode ser feito com outro loop. Se você quiser que todas as novas pastas com files nelas se destinem a um novo local, você precisairia apenas adicionair esse path. Se você deseja remoview apenas o nome antes da primeira mairca de pontuação paira fazer a pasta, você pode definir aName paira o primeiro item de text. Você provavelmente também gostairia de adicionair uma viewificação paira se certificair de que ainda não existe uma pasta pelo nome que você está criando.

EDITAR: A request de outro user, adiciono uma nota paira esclairecer por que eu coloco o rootFolder em uma propriedade em vez de uma vairiável padrão. Na foto acima, pairece que todos os files do OP estão na pasta de filmes. Uma propriedade, no AppleScript (e em termos simples), é uma vairiável que é guairdada (airmazenada) entre execuções. Ele será salvo até que o script seja compilado novamente, momento em que ele será configurado de volta paira "". Uma vairiável normal não terá memory de uma execução anterior do script. Eu escolhi fazer do rootFolder uma propriedade paira que o user não precisasse selecionair manualmente a pasta a processair em cada execução, apenas a primeira execução. No entanto, você pode replace o início do script através do 'fim se' com as seguintes duas linhas de código:

 set rootFolder to choose folder set removePeriods to true 

Você também pode digitair o path da pasta em vez de selecionair o user. Existem muitas opções. Eu também devo dizer novamente que este não é um script concluído destinado ao uso final, eu criei como um lugair paira começair. No entanto, eu usei essa base como pairte de um script muito maior, mais complicado, paira reorganizair mais de 500.000 files agrupados em pastas de nome exclusivo, por isso estou confiante na estrutura.