Como mover arquivos para arquivos com o mesmo nome, mas extensões diferentes

2

Eu tenho uma pasta A com muitos arquivos pequenos. Na pasta pai, existem muitas pastas com outros arquivos nelas. agora na pasta A existem arquivos que possuem o mesmo nome que nas outras pastas, mas eles também possuem .xmp no final.

Essa é a estrutura agora:

  • ~ / A / foo.xmp
  • ~ / A / bar.xmp
  • ~ / folder1 / foo
  • ~ / folder2 / bar

e é assim que eu quero que seja:

  • ~ / folder1 / foo
  • ~ / folder1 / foo.xmp
  • ~ / folder2 / bar
  • ~ / folder2 / bar.xmp

Como faço para encontrar o arquivo correspondente para foo.xmp (o arquivo correspondente é: foo) no diretório pai e mover o arquivo para lá?

Como coloco isso em um loop para que ele passe por todos os arquivos no diretório atual?

    
por Anton 18.07.2015 / 01:04

2 respostas

1

for dir in folder*/
do
    for f in "$dir"*
    do
        base=${f#$dir}
        [ -f "A/$base.xmp" ] && mv "A/$base.xmp" "$dir"
    done
done
    
por 18.07.2015 / 01:20
0

Algo parecido com isso pode ser feito:

#Assuming there are N folders folder1,folder2...folderN
for folder in folder* 
do
cd $folder
for file in *
do
#if file with .xmp extension exists in ~/A folder
[[ -f $file ]] && [[ -f ~/A/$file.xmp ]] && mv ~/A/$file.xmp .
done
cd ..
done
    
por 18.07.2015 / 01:23