Linux rename files based on another file in the directory?

后端 未结 1 2150
自闭症患者
自闭症患者 2021-02-15 09:39

I\'ve got about 750 directories that contain two files each:

long_somewhat_random_filename.jpg
thumb.jpg

What I\'d like to do is use find

相关标签:
1条回答
  • 2021-02-15 09:48

    Give the script below a shot. Right now the echo makes it benign so you can try before you buy so to speak. If you like what you see, remove the echo and run the script again to actually make the changes.

    #!/bin/bash
    
    while read file; do
     echo mv "${file%/*}/thumb.jpg" "${file%.*}_thumb.jpg"
    done < <(find . -type f ! -name "thumb.jpg" -name "*.jpg")
    

    Input

    $ find . -type f -name "*.jpg"
    ./dir1/dir1_foo_bar.jpg
    ./dir1/thumb.jpg
    ./dir2/dir2_foo_bar.jpg
    ./dir2/thumb.jpg
    ./dir3/dir3_foo_bar.jpg
    ./dir3/thumb.jpg
    ./dir4/dir4_foo_bar.jpg
    ./dir4/thumb.jpg
    ./dir5/dir5_foo_bar.jpg
    ./dir5/thumb.jpg
    

    Output

    $ ./mvthumb.sh
    mv ./dir1/thumb.jpg ./dir1/dir1_foo_bar_thumb.jpg
    mv ./dir2/thumb.jpg ./dir2/dir2_foo_bar_thumb.jpg
    mv ./dir3/thumb.jpg ./dir3/dir3_foo_bar_thumb.jpg
    mv ./dir4/thumb.jpg ./dir4/dir4_foo_bar_thumb.jpg
    mv ./dir5/thumb.jpg ./dir5/dir5_foo_bar_thumb.jpg
    
    0 讨论(0)
提交回复
热议问题