A ordem física dos arquivos é importante quando eu os copio no meu pendrive e ouço no mp3 player do carro. A maioria das pastas do meu álbum de música não está classificada , por exemplo, ls -f
pode produzir:
03.song3.mp3
01.song1.mp3
02.song2.mp3
Quando copio essa pasta no meu pen drive, os arquivos são copiados nessa ordem. O mp3 player do meu carro exibe os arquivos na ordem não classificada, o que não é o que eu quero. Posteriormente, posso reordenar os arquivos no pen drive (consulte: Como reordenar pastas? (Conforme exibido em `ls -U`) ), mas poderia evitá-lo completamente se eu pudesse reordená-los nesse diretório no disco rígido (ext4 )? Existe uma maneira de fazer isso?
(Na falta disso, pode haver uma maneira de escrever um find
comando, que obtém os arquivos, os classifica e depois os copia em ordem ??) Alguma sugestão?
Respostas:
É improvável que você consiga fazer isso no ext4. Diferentemente do FAT (32), que usava uma tabela linear de arquivos em um diretório, os sistemas de arquivos modernos usam estruturas complexas, como árvore B + (NTFS, XFS) ou árvore B com hash (ext3 / 4), onde todas as entradas são classificadas de acordo com um algoritmo específico.
Em particular, ext3 / 4 classifica os arquivos de acordo com o valor de hash do nome deles, para que você sempre obtenha os mesmos arquivos na mesma ordem. É possível desativar o recurso dir_index via
tune2fs
, mas pode custar desempenho se você tiver diretórios contendo muitos arquivos.Um comando muito básico para isso pode ser o
cp dir/* otherdir/
local em que o shell classifica os nomes ao expandir argumentos ecp
simplesmente os copia na ordem dada.Algo mais complexo, para copiar subdiretórios:
fonte
move
os arquivos dizerem umanew_tmp
pasta e depois movê-los de volta, mas ditar a ordem? (Parece funcionar a partir de uma interface gráfica para as pastas ?!)mkdir test1 test2; touch test1/{a,b,c,d} test2/{d,c,b,a}; ls -f test1 test2
- os arquivos serão classificados na mesma ordem (a c b .. d .
no meu sistema), mesmo que tenham sido criados ao contrário.cp dir/* otherdir/
parece muito mais fácil, mas usa a ordem original. eu poderia implementar a classificação lá?cp
. Tenteecho dir/*
ver para o que eles se expandem. Mas, novamente, isso só importa ao copiar para cartões de memória FAT; isso não muda nada ao copiar para o ext4.find SRC_DIR -iname '*mp3' -print0 | sort -z | xargs -0 -I {} cp {} DEST_DIR
Parece que os outros têm problemas semelhantes .
Ferramenta que permite aos usuários organizar arquivos de acordo com seus desejos e classificar o estilo de baixo nível do sistema de arquivos FAT.
A mesma ferramenta no freecode.com
Espero que ajude.
fonte