nome de arquivo correspondente (sem extensão) em duas pastas e grave-as em uma nova pasta

2

Eu tenho duas pastas dir1, dir2. dir1 contém todos os arquivos * .png e dir2 contém todos os arquivos * .mrc. dir1 tem menos número de arquivos que dir2.

Eu tenho certeza que para cada arquivo png em dir1 existe um arquivo mrc em dir2 com o mesmo nome. Como posso criar uma pasta que contenha apenas os arquivos mrc com o mesmo nome dos arquivos png?

    
por Raja Dey 11.04.2018 / 01:28

1 resposta

2

É um pouco ineficiente, mas se você tiver certeza de que cada arquivo png tem um arquivo mrc correspondente, tudo o que você realmente precisa fazer é passar pelos arquivos png e substituir o componente de diretório e extensão, por exemplo.

for f in dir1/*.png; do echo cp "dir2/$(basename "$f" .png).mrc" newdir/; done

dado

$ tree dir1 dir2
dir1
├── a.png
├── b.png
└── d.png
dir2
├── a.mrc
├── b.mrc
├── c.mrc
├── d.mrc
├── e.mrc
└── f.mrc

0 directories, 9 files

então

$ for f in dir1/*.png; do echo cp "dir2/$(basename "$f" .png).mrc" newdir/; done
cp dir2/a.mrc newdir/
cp dir2/b.mrc newdir/
cp dir2/d.mrc newdir/

Remova o echo quando estiver satisfeito com o que você quer

    
por steeldriver 11.04.2018 / 02:47