Sua pergunta, conforme escrita, sugere que
você quer procurar o sistema de arquivos inteiro por Analysis.mzXML
files,
mesmo que apareçam em /lib/perl5/5.14/Unicode/Collate/Locale
,
/proc/sys/net/ipv4/conf/all
, /sys/devices/system/cpu/cpu0/cache
,
%código%,
ou similarmente lugares improváveis / inapropriados -
e que você deseja mover os arquivos para o diretório raiz,
o que também parece improvável / inapropriado.
Eu assumi que você está trabalhando em algum outro diretório.
Execute este comando:
find . -mindepth 7 -maxdepth 7 -type f -name Analysis.mzXML -exec sh -c 'for arg do echo mv -i -- "$arg" "$(echo "$arg" | sed -e "s|^\./||" -e "s|/dir6/Analysis\.mzXML|.mzXML|" -e "s|/|_|g")"; done' sh {} +
Você pode deixar de fora o /usr/share/doc/cmake/html/_sources
Se você tiver certeza de que todos os arquivos -mindepth 7 -maxdepth 7
estão no sétimo nível.
Este comando encontra todos os arquivos Analysis.mzXML
no sétimo nível
e os passa para um script mini-shell.
Isso leva cada nome de caminho, retira o Analysis.mzXML
no início
e o ./
no final, junto com a parte dir6
do nome do arquivo,
e altera todos os restantes Analysis
caracteres para /
.
Isso deve produzir uma saída como esta:
mv -i -- ./dir1/dir2/dir3/dir4/dir5/dir6/Analysis.mzXML dir1_dir2_dir3_dir4_dir5.mzXML
mv -i -- ./the/quick/brown/fox/jumps/dir6/Analysis.mzXML the_quick_brown_fox_jumps.mzXML
mv -i -- ./over/the/lazy/dog/foo bar/dir6/Analysis.mzXML over_the_lazy_dog_foo bar.mzXML
Se isso parece certo, execute o comando novamente,
mas exclua o primeiro _
(ou seja, altere echo
para apenas echo mv
).
Notas:
- Isso não confirma que
o diretório do sexto nível é chamado de
mv
. Se encontrar um arquivodir6
emAnalysis.mzXML
, ele renomeia esse arquivo codificar% em vez dedir11/dir12/dir13/dir14/dir15/dir16
. - O
dir11_dir12_dir13_dir14_dir15_dir16_Analysis.mzXML
fará com quedir11_dir12_dir13_dir14_dir15.mzXML
peça confirmação se ele tentar mover um arquivo para um nome que já existe. - O
-i
deve protegê-lo contra argumentos que começam commv
. Isso não deve ser um problema, pois--
deve sempre começar com-
. - Se você realmente quiser fazer isso a partir da raiz do sistema de arquivos, isso deve funcionar.
Apenas
$arg
e siga as instruções acima.
Considerações finais:
Isso pode falhar se você tiver um diretório chamado ./
.
Então não faça isso.