Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 重命名目录中的文件;新名称取决于旧名称的一部分_Bash_Shell_Awk_Sed_Grep - Fatal编程技术网

Bash 重命名目录中的文件;新名称取决于旧名称的一部分

Bash 重命名目录中的文件;新名称取决于旧名称的一部分,bash,shell,awk,sed,grep,Bash,Shell,Awk,Sed,Grep,我想重命名目录中名称与某些后缀匹配的文件,即810或814。我希望新名称包含一个根据后缀选择的字符串(对于814,EB\u-ENROLL\u-REQ;对于810,EB\u-BCHG\u-REQ) 输入文件名(全部在$source\u dir中)的示例如下: 我想读取目录中的所有文件,只重命名以814或810结尾的文件,忽略其余文件 我试过: export search_dir=/home/test2 declare -a myArray myArray[814]=EB_ENROLL_REQ m

我想重命名目录中名称与某些后缀匹配的文件,即
810
814
。我希望新名称包含一个根据后缀选择的字符串(对于
814
EB\u-ENROLL\u-REQ
;对于
810
EB\u-BCHG\u-REQ

输入文件名(全部在
$source\u dir
中)的示例如下:

我想读取目录中的所有文件,只重命名以
814
810
结尾的文件,忽略其余文件

我试过:

export search_dir=/home/test2

declare -a myArray
myArray[814]=EB_ENROLL_REQ
myArray[810]=EB_BCHG_REQ

for entry in "$search_dir"/*
do
    pattern=${entry: -3}
    #if ??
    mv "$entry" "$entry.XHS.JOBRUNID.${myArray[$pattern]}.$entry.XHE"
done
但是没有得到我需要的

814
文件的输出文件名应为,例如:

CCRD_LLX_814_20160218043487.EDI814.XHS.JOBRUNID.EB_ENROLL_REQ.CCRD_LLX_814_20160218043487.EDI814.XHE
试试这个:

declare -A myArray                   # -A, not -a --- index by strings
myArray["814"]=EB_ENROLL_REQ         # string suffixes, not numeric
myArray["810"]=EB_BCHG_REQ

cd "$search_dir"       # Otherwise you have to strip $search_dir out of $entry
for entry in *81[04]   # Only work on the files that end with 810 or 814
do
    pattern=${entry: -3}             # the string "810" or "814"
    mv "$entry" "$entry.XHS.JOBRUNID.${myArray[$pattern]}.$entry.XHE"
done

我想我把我的qs弄糊涂了,说它是JU的一部分。整个问题是我想添加一些基于后缀814/810的字符串file@Rczone编辑-试一试再次编辑以修复我在测试中发现的一个bug。是的,我声明了search_dir=/home/test/所以当我读到它正在读取目录路径时also@Rczone那么,编辑的脚本是否满足您的需要?在我的系统中,它似乎与您在编辑的问题中描述的一样(如果我按照您的意愿理解问题)。@Rczone很高兴听到它!那么请你打勾接受这个答案好吗?如你所知,这就把问题从没有答案的名单上清除了,我们俩都得到了声誉分数:)。
declare -A myArray                   # -A, not -a --- index by strings
myArray["814"]=EB_ENROLL_REQ         # string suffixes, not numeric
myArray["810"]=EB_BCHG_REQ

cd "$search_dir"       # Otherwise you have to strip $search_dir out of $entry
for entry in *81[04]   # Only work on the files that end with 810 or 814
do
    pattern=${entry: -3}             # the string "810" or "814"
    mv "$entry" "$entry.XHS.JOBRUNID.${myArray[$pattern]}.$entry.XHE"
done