使用 unix shell 脚本移动到另一个文件夹时更改文件名
Change filenames while moving to another folder using unix shell script
我的问题与移动到目标文件夹时替换文件名有关
echo "src_filename_final_array:::${src_filename_final_array[@]}"
显示以下内容
SRC1_VEX_V4_20190915.txt SRC1_VEX_V4_20190915.ctl
数组src_filename_final_array
包含以上两个文件
已编写 mv
命令
mv "${src_filename_final_array[@]}" $src_file_InProcess_folder
是否可以在单个 mv
命令中将文件名 SRC1_VEX_V4_20190915.txt SRC1_VEX_V4_20190915.ctl
更改为 SRC1_VEX_20190915.txt SRC1_VEX_20190915.ctl
删除版本号可以是V4/v12/或任何起始V
有人可以建议最好的方法吗?
提前致谢。
此致,
普拉萨德·比拉哈利
您可以编写一个简单的脚本来遍历数组并更改每个文件名
如下图
src_filename_final_array=(SRC1_VEX_V4_20190915.txt SRC1_VEX_V4_20190915.ctl)
for i in "${arr[@]}"
do
new_file=`echo "$i" | sed 's/V[0-9]_//g'`
mv "$i" "$new_file"
done
下面是工作示例
[cloudera@quickstart sub1]$ ls -lrt
total 8
drwxrwxr-x 2 cloudera cloudera 4096 Oct 31 00:17 sub2
-rw-rw-r-- 1 cloudera cloudera 177 Oct 31 23:41 table_list.txt
-rw-rw-r-- 1 cloudera cloudera 0 Nov 3 23:30 SRC1_VEX_V4_20190915.txt
-rw-rw-r-- 1 cloudera cloudera 0 Nov 3 23:31 SRC1_VEX_V4_20190915.ctl
之后:
[cloudera@quickstart sub1]$ for i in "${arr[@]}"
> do
> new_file=`echo "$i" | sed 's/V[0-9]_//g'`
> mv "$i" "$new_file"
>
> done
[cloudera@quickstart sub1]$ ls -lrt
total 8
drwxrwxr-x 2 cloudera cloudera 4096 Oct 31 00:17 sub2
-rw-rw-r-- 1 cloudera cloudera 177 Oct 31 23:41 table_list.txt
-rw-rw-r-- 1 cloudera cloudera 0 Nov 3 23:30 SRC1_VEX_20190915.txt
-rw-rw-r-- 1 cloudera cloudera 0 Nov 3 23:31 SRC1_VEX_20190915.ctl
作为替代方案,请考虑使用 'rename'(来自 perl 贡献包),它具有强大的 RE 功能,构建在 Perl 引擎上。
rename 's/V[0-9]_//g' SRC1_VEX_V4_20190915.txt SRC1_VEX_V4_20190915.ctl
请检查以确保您的 rename
代码正确。它是 rename
包的一部分,有时作为 file-rename
分发
我的问题与移动到目标文件夹时替换文件名有关
echo "src_filename_final_array:::${src_filename_final_array[@]}"
显示以下内容
SRC1_VEX_V4_20190915.txt SRC1_VEX_V4_20190915.ctl
数组src_filename_final_array
包含以上两个文件
已编写 mv
命令
mv "${src_filename_final_array[@]}" $src_file_InProcess_folder
是否可以在单个 mv
命令中将文件名 SRC1_VEX_V4_20190915.txt SRC1_VEX_V4_20190915.ctl
更改为 SRC1_VEX_20190915.txt SRC1_VEX_20190915.ctl
删除版本号可以是V4/v12/或任何起始V
有人可以建议最好的方法吗?
提前致谢。
此致, 普拉萨德·比拉哈利
您可以编写一个简单的脚本来遍历数组并更改每个文件名 如下图
src_filename_final_array=(SRC1_VEX_V4_20190915.txt SRC1_VEX_V4_20190915.ctl)
for i in "${arr[@]}"
do
new_file=`echo "$i" | sed 's/V[0-9]_//g'`
mv "$i" "$new_file"
done
下面是工作示例
[cloudera@quickstart sub1]$ ls -lrt
total 8
drwxrwxr-x 2 cloudera cloudera 4096 Oct 31 00:17 sub2
-rw-rw-r-- 1 cloudera cloudera 177 Oct 31 23:41 table_list.txt
-rw-rw-r-- 1 cloudera cloudera 0 Nov 3 23:30 SRC1_VEX_V4_20190915.txt
-rw-rw-r-- 1 cloudera cloudera 0 Nov 3 23:31 SRC1_VEX_V4_20190915.ctl
之后:
[cloudera@quickstart sub1]$ for i in "${arr[@]}"
> do
> new_file=`echo "$i" | sed 's/V[0-9]_//g'`
> mv "$i" "$new_file"
>
> done
[cloudera@quickstart sub1]$ ls -lrt
total 8
drwxrwxr-x 2 cloudera cloudera 4096 Oct 31 00:17 sub2
-rw-rw-r-- 1 cloudera cloudera 177 Oct 31 23:41 table_list.txt
-rw-rw-r-- 1 cloudera cloudera 0 Nov 3 23:30 SRC1_VEX_20190915.txt
-rw-rw-r-- 1 cloudera cloudera 0 Nov 3 23:31 SRC1_VEX_20190915.ctl
作为替代方案,请考虑使用 'rename'(来自 perl 贡献包),它具有强大的 RE 功能,构建在 Perl 引擎上。
rename 's/V[0-9]_//g' SRC1_VEX_V4_20190915.txt SRC1_VEX_V4_20190915.ctl
请检查以确保您的 rename
代码正确。它是 rename
包的一部分,有时作为 file-rename