3

I have a folder A with many small files. In the parent folder there are many folders with other files in them. now in folder A there are files that have the same name as in the other folders, but they additionaly have .xmp at the end.

Thats the structure now:

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

and that is how I want it to be:

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

How do I find the coresponding file to foo.xmp (the coresponding file is: foo) in the parent directory and move my file there?

How do I put this in a loop so it goes through all files in my current directory?

1
  • 1
    Bash is very trendy at this time of the year. A shame that google and man aren't... Commented Jul 18, 2015 at 1:44

2 Answers 2

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
0

Something like this can be done:

#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

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.