for dir in folder*/
do
for f in "$dir"*
do
base=${f#$dir}
[ -f "A/$base.xmp" ] && mv "A/$base.xmp" "$dir"
done
done
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:
e é assim que eu quero que seja:
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?
for dir in folder*/
do
for f in "$dir"*
do
base=${f#$dir}
[ -f "A/$base.xmp" ] && mv "A/$base.xmp" "$dir"
done
done
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
Tags command-line bash move