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
Linux Bash复制文件并替换文件名中的字符串_Linux_Bash - Fatal编程技术网

Linux Bash复制文件并替换文件名中的字符串

Linux Bash复制文件并替换文件名中的字符串,linux,bash,Linux,Bash,我有一个名为SNAPSHOT的文件,我想将该文件复制到新的目标。我没有在那个目录中工作,所以我将使用直接路径。我不擅长bash命令,所以这给我带来了一些麻烦。我觉得这应该很琐碎 这将被放入一个脚本中,该脚本将复制数百个JAR文件,并将快照字符串附加到文件名。这是我一直在使用的东西,但如果我当前的工作目录不在这些JAR的树级别,那么它会给我带来麻烦 cp "${SRC_PATH}"/grid-start/target/grid-start-* "${INSTALLER_PATH}"/boot/$(

我有一个名为SNAPSHOT的文件,我想将该文件复制到新的目标。我没有在那个目录中工作,所以我将使用直接路径。我不擅长bash命令,所以这给我带来了一些麻烦。我觉得这应该很琐碎

这将被放入一个脚本中,该脚本将复制数百个JAR文件,并将快照字符串附加到文件名。这是我一直在使用的东西,但如果我当前的工作目录不在这些JAR的树级别,那么它会给我带来麻烦

cp "${SRC_PATH}"/grid-start/target/grid-start-* "${INSTALLER_PATH}"/boot/$(ls "${SRC_PATH}"/grid-start/target/*SNAP* | sed "s/-SNAPSHOT//")
情景:

文件:
/home/build/src/trunk/grid start/target/grid-start-1.6-SNAPSHOT.jar

Dest:
/home/build/installer/boot/grid-start-1.6.jar


谢谢

我为你写了这个bash脚本。它应该达到它的目的

#!/bin/bash
#
# copier.sh

for f in $(find /home/build/ -name '*SNAPSHOT*');
do
    filename=${f##*/};
    filename=${filename/-SNAPSHOT};
    cp $f ./installer/$filename;
done

# EOF
用法:从/home/build/运行
copier.sh
,它将复制(并删除-SNAPSHOT)到
/home/build/installer/
目录

它有点丑陋,但它做了它应该做的