recursively add file extension to all files

前端 未结 6 1868
盖世英雄少女心
盖世英雄少女心 2020-12-07 07:52

I have a few directories and sub-directories containing files with no file extension. I want to add .jpg to all the files contained within these directories. I\

相关标签:
6条回答
  • 2020-12-07 08:08

    rename

    not sure that it can rename files without extensions (I'm on windows 7 right now)

    0 讨论(0)
  • 2020-12-07 08:10

    like this,

    for f in $(find . -type f); do mv $f ${f}.jpg; done
    

    I am not expecting you have space separated file names,
    If you do, the names will need to be processed a bit.

    If you want to execute the command from some other directory,
    you can replace the find . with find /target/directory.

    0 讨论(0)
  • 2020-12-07 08:12

    For renaming all files with no extension in Windows basic you can do ren * *.jpg Since the file as no extension, just use the *, or if you want to change png to jpg use ren *.png *.jpg

    0 讨论(0)
  • 2020-12-07 08:15

    This is a little late, but I thought I would add that a better solution (although maybe less readable) than the ones so far might be:

    find /path -type f -not -name "*.*" -print0 | xargs -0 rename 's/(.)$/$1.jpg/'
    

    Using the find | xargs pattern generally results in more efficient execution, as you don't have to fork a new process for each file.

    Note that this requires the version of rename found in Debian-flavored distros (aka prename), rather than the traditional rename. It's just a tiny perl script, though, so it would be easy enough to use the command above on any system.

    0 讨论(0)
  • 2020-12-07 08:21

    Alternative command without an explicit loop (man find):

    find . -type f -exec mv '{}' '{}'.jpg \;
    

    Explanation: this recursively finds all files (-type f) starting from the current directory (.) and applies the move command (mv) to each of them. Note also the quotes around {}, so that filenames with spaces (and even newlines...) are properly handled.

    0 讨论(0)
  • 2020-12-07 08:27

    this will find files without extension and add your .jpg

    find /path -type f -not -name "*.*" -exec mv "{}" "{}".jpg \;
    
    0 讨论(0)
提交回复
热议问题