이름은 같지만 확장자가 다른 파일로 파일을 이동하는 방법

이름은 같지만 확장자가 다른 파일로 파일을 이동하는 방법

작은 파일이 많은 폴더 A가 있습니다. 상위 폴더 내에는 다른 파일을 포함하는 많은 폴더가 있습니다. 이제 폴더 A에는 다른 폴더와 이름이 같은 파일이 몇 개 있지만 끝에도 .xmp가 있습니다.

현재 구조는 다음과 같습니다.

  • ~/A/foo.xmp
  • ~/A/bar.xmp
  • ~/폴더1/foo
  • ~/폴더2/열

이것이 내가 원하는거야:

  • ~/폴더1/foo
  • ~/folder1/foo.xmp
  • ~/폴더2/열
  • ~/folder2/bar.xmp

상위 디렉토리(해당 파일은 foo)에서 foo.xmp에 해당하는 파일을 찾아 해당 파일을 그곳으로 이동하려면 어떻게 해야 합니까?

현재 디렉터리의 모든 파일을 통과하도록 이것을 루프에 어떻게 넣나요?

답변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

답변2

다음을 수행할 수 있습니다.

#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

관련 정보