Eu tenho um grande número de arquivos pequenos, f, organizados em uma estrutura de diretórios da seguinte maneira:
/A/B/C/f
Existem 11 diretórios no nível A, cada um com cerca de 100 diretórios no nível de B, cada um com cerca de 30 diretórios no nível de C, cada um com um arquivo f.
Como movo todos os arquivos para um nível acima? Por exemplo, dado esse conjunto de arquivos ...
/ A / B / C / f1
/ A / B / C / f2
/ A / B / C / f3
/ A / B / C / f4
Eu quero que o diretório /A/B/
contenha 4 arquivos, f1 a f4. A remoção de diretórios C não é necessária.
Eu estou esperando que este é um problema resolvido, possivelmente envolvendo find
, xargs
e whatnot
. Alguma ideia?
Felicidades,
James
Meu primeiro palpite é
contanto que você não especifique,
-depth
tudo ficará bem. Eu não tentei, então teste primeiro antes de se comprometer.fonte
mv
comandos são executados no diretório atual, portanto..
não fazem o que você espera. Veja minha resposta para soluções. @ jl6: o shell não tem nada a ver com..
isso, é tratado pelo kernel.Se você deseja mover apenas os arquivos que estão nos diretórios folha (ou seja, não deseja mover
/A/B/file
para/A
seB
contém subdiretórios), aqui estão algumas maneiras de fazer isso:Ambos exigem isso
Este funciona:
Isso será mais rápido, mas não gosta de diretórios de código-fonte vazios:
fonte