bash removing part of a file name

bash, mv, rename, sed, shell

Solution

`rename` is part of the `perl` package. It renames files according to perl-style regular expressions. To remove the dates from your file names:

rename 's/[0-9]{14}//' CombinedReports_LLL-*.csv

If `rename` is not available, `sed`+`shell` can be used:

for fname in Combined*.csv ; do mv "$fname" "$(echo "$fname" | sed -r 's/[0-9]{14}//')" ; done

The above loops over each of your files. For each file, it performs a `mv` command: `mv "$fname" "$(echo "$fname" | sed -r 's/[0-9]{14}//')"` where, in this case, `sed` is able to use the same regular expression as the `rename` command above. `s/[0-9]{14}//` tells `sed` to look for 14 digits in a row and replace them with an empty string.

Problem

I have the following files in the following format: ``` $ ls CombinedReports_LLL-*'('*.csv CombinedReports_LLL-20140211144020(Untitled_1).csv CombinedReports_LLL-20140211144020(Untitled_11).csv CombinedReports_LLL-20140211144020(Untitled_110).csv CombinedReports_LLL-20140211144020(Untitled_111).csv CombinedReports_LLL-20140211144020(Untitled_12).csv CombinedReports_LLL-20140211144020(Untitled_13).csv CombinedReports_LLL-20140211144020(Untitled_14).csv CombinedReports_LLL-20140211144020(Untitled_15).csv CombinedReports_LLL-20140211144020(Untitled_16).csv CombinedReports_LLL-20140211144020(Untitled_17).csv CombinedReports_LLL-20140211144020(Untitled_18).csv CombinedReports_LLL-20140211144020(Untitled_19).csv ``` I would like this part removed: `20140211144020` (this is the timestamp the reports were run so this will vary) and end up with something like: ``` CombinedReports_LLL-(Untitled_1).csv CombinedReports_LLL-(Untitled_11).csv CombinedReports_LLL-(Untitled_110).csv CombinedReports_LLL-(Untitled_111).csv CombinedReports_LLL-(Untitled_12).csv CombinedReports_LLL-(Untitled_13).csv CombinedReports_LLL-(Untitled_14).csv CombinedReports_LLL-(Untitled_15).csv CombinedReports_LLL-(Untitled_16).csv CombinedReports_LLL-(Untitled_17).csv CombinedReports_LLL-(Untitled_18).csv CombinedReports_LLL-(Untitled_19).csv ``` I was thinking simply along the lines of the mv command, maybe something like this: ``` $ ls CombinedReports_LLL-*'('*.csv ``` but maybe a sed command or other would be better

Original source

Related problems