使用UNIX Shell脚本移动到另一个文件夹时更改文件名

问题描述 投票:0回答:1

我的问题与移动到目标文件夹时替换文件名有关>>

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

任何人都可以提出建议这样做的最佳方法吗?

提前感谢。

关于,Prasad S Billahalli

我的问题与在移动到目标文件夹回显时替换文件名有关” src1_VEX_V4_20190915.txt ...”之后显示“ src_filename_final_array ::: $$ src_filename_final_array [@]}”显示如下:

您可以编写一个简单的脚本来遍历数组并更改每个文件名如下所示
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

regex shell command filenames mv
1个回答
0
投票
下面是工作示例
© www.soinside.com 2019 - 2024. All rights reserved.