移动一堆文件时更改所有文件

时间:2015-06-16 13:59:42

标签: linux bash unix

有关我应如何处理此事的任何建议吗? 我需要移动目录中的所有文件并更改其名称,删除所有内容,包括第一个'_',例如:

之前的例子:

data directory
DT21_Filename1
D22_Filename2
D33_Filename3

export_data目录 示例后:

Filename1
Filename2
Filename3

2 个答案:

答案 0 :(得分:1)

首先使用以下命令重命名所有文件:

rename 's/([^_]*_)//' *

然后将它们移动到目录:

mv * PATH_TO_NEW_DIRECTORY

您也可以为上面写一个脚本。

脚本:

curr_dir=$PWD
cd $1
for i in *; do
    rename 's/([^_]*_)//' $i
done;
mv * "$curr_dir/$2"

用法:

bash filename.sh path_to_old_directory relative_path_to_new_directory_from current

这会将文件从old_direct重命名并移动到new_directory。

如果要为新目录提供绝对路径:

cd $1
for i in *; do
    rename 's/([^_]*_)//' $i
done;
mv * $2

答案 1 :(得分:1)

cd SOURCE_DIR
for file in *; do
    newname=`echo $file | sed 's/[^_]*_//'`
    mv $file DESTINATION_DIR/$newname
done