|
|
|
|
site google
|
|||||||
| Fóruns | Registar | Blog | Man Pages | Fórum Regimento | Ligações | Álbuns | FAQ | Usuários | Calendário | Pesquisa | Today's Posts | Mark Forums Read |
| Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui. |
![]() |
|
|
Thread Tools | Pesquisar este Thread | Rate Thread | Display Modes |
|
|||
|
Excluindo arquivos extra com nomes similares
Olá, Tenho uma grande quantidade de arquivos em um diretório raiz, com vários sub-diretórios, e muitos destes sub-diretórios tem arquivos semelhantes com nomes semelhantes. Preciso limpar isto. Os nomes dos arquivos são do formato: Código:
/path/to/dir/subdir/file name.dat /path/to/dir/subdir/file name 1.dat Quero manter apenas Código:
/path/to/dir/filename.dat e remover o outro arquivo. Eu tentei algumas ferramentas fslint incluindo, mas não funcionou porque o conteúdo real dos arquivos podem variar um pouco. Ajuda na criação de um script ou similar para eliminar os arquivos desnecessários seria muito apreciada. Obrigado! |
| Links Patrocinados | ||
|
|
|
|||
|
Se você tiver apenas subdiretórios de nível único que você poderia usar Código:
rm /path/to/dir/*/filename.dat para eliminar todas as ocorrências de "filename.dat" nos subdiretórios imediatamente abaixo / caminho / para / dir / ou se você quiser também remover arquivos semelhantes por exemplo, você poderia tentar algo como: Código:
ls /path/to/dir/*/file*name*.dat se refere exactamente os arquivos que você precisa para remover você pode Código:
rm /path/to/dir/*/file*name*.dat Última edição por Scrutinizer; em 09-30-2009 05:32.. |
|
|||
|
Infelizmente, nem que sua simples.
Por um lado, eu não sei os nomes dos arquivos de antemão. Além disso, o sub-diretórios são aninhados, até três níveis de profundidade. Há um total de 30.000 ficheiros com um número estimado de 10.000 duplicatas. Deixe-me tentar esclarecer: eu quero apagar arquivos duplicados. Estes arquivos duplicados estão na mesma pasta que o original e tem um "1" no final do nome do arquivo. Alguns exemplares também podem ter o "1" no final do nome do arquivo, mas repete para eles não existem. |
|
|||
|
OK, isso é uma exigência muito diferentes . Assumindo que as duplicatas têm sempre "1" no final, seguido da extensão ". Dat", você pode experimentar este ksh / bash código:Código:
BASEDIR='/path/to/dir'
ext='.dat'
duplext=' 1'
find "$BASEDIR" -type d | while read dir; do
find $dir -name "*$ext" -maxdepth 1 -type f | while read file; do
duplicate="${file%$ext}$duplext$ext"
if [[ -f "$duplicate" ]]; then
rm "$duplicate"
fi
done
doneÚltima edição por Scrutinizer; em 10-01-2009 05:36.. |
| Links Patrocinados |
|
|
![]() |
| Marcadores |
| Thread Tools | Pesquisar este Thread |
| Display Modes | Esta taxa Thread |
|
|
Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
|
||||
| Fio | Thread Starter | Fórum | Respostas | Última postagem |
| remover arquivos extra no DOS | namishtiwari | Programação Shell Script e | 11 | 08-27-2009 11:27 |
| csh script para apagar os espaços extras no arquivo texto | hertingm | Programação Shell Script e | 2 | 03-12-2009 04:22 |
| Apagar a semelhante | avi.skynet | Programação Shell Script e | 2 | 02-02-2009 05:09 |
| Comparando as colunas semelhantes em dois arquivos diferentes | ragavhere | Programação Shell Script e | 13 | 04-16-2008 09:53 |
| Anexar texto para um número semelhante de filenames | Djaunl | UNIX para Dummies Perguntas & Respostas | 4 | 10-10-2007 12:16 |