How do I Remove Specific Characters From File Names Using BASH

前端 未结 5 1438
小鲜肉
小鲜肉 2020-12-23 01:52

I have a lot of files that have a shared pattern in their name that I would like to remove. For example I have the files, \"a_file000.tga\" and \"another_file000.tga\". I

相关标签:
5条回答
  • 2020-12-23 02:29

    Try this (this works in plain old Bourne sh as well):

    for i in *000.tga
    do
        mv "$i" "`echo $i | sed 's/000//'`"
    done
    

    Both arguments are wrapped in quotes to support spaces in the filenames.

    0 讨论(0)
  • 2020-12-23 02:33

    Bash can do sed-like substitutions:

    for file in *; do mv "${file}" "${file/000/}"; done
    
    0 讨论(0)
  • 2020-12-23 02:40

    A non-bash solution, since I know two speedy posters have already covered that:

    There's an excellent short perl program called rename which is installed by default on some systems (others have a less useful rename program). It lets you use perl regex for your renaming, e.g:

    rename 's/000//' *000*.tga
    
    0 讨论(0)
  • 2020-12-23 02:41

    Use rename, maybe you need to install it on linux, Its python script

    rename (option) 's/oldname/newname' ...
    

    so you can use it like

    rename -v 's/000//' *.tga
    

    that means we are instructing to replace all files with .tga extension in that folder to replace 000 with empty space. Hope that works

    You can check this link for more info and here

    0 讨论(0)
  • 2020-12-23 02:52
    #!/bin/bash
    ls | while read name; do
      echo mv $name ${name/$1//}
    done
    
    0 讨论(0)
提交回复
热议问题