Linux

如何在 linux 上移動和部分重命名文件

  • September 10, 2019

我有來自建構管道的版本化文件。

foo-1.3.4.war

我需要移動這些文件以獲得名稱

foo-dev-1.3.4.war

我該怎麼辦?

我在想類似的東西, mv foo-*.war foo-dev-*.war但這只會創建帶有 *.

有任何想法嗎?

預設情況下,在最常見的發行版中只使用 bash 和命令:

find . -name "foo-*.war" -exec sh -c 'mv "$1" "other_folder/foo-dev-${1#foo-}"' _ {} \;

這對我有用 - 也可以用 find 而不是 ls 來完成:

 #touch foo-1.3.{1..10}.war
 #ls -1
 foo-1.3.10.war
 foo-1.3.1.war
 foo-1.3.2.war
 foo-1.3.3.war
 foo-1.3.4.war
 foo-1.3.5.war
 foo-1.3.6.war
 foo-1.3.7.war
 foo-1.3.8.war
 foo-1.3.9.war

 #for fil in $(ls -1); do 
    filNew=$(echo $fil | sed 's/foo/foo-dev/g');
    mv $fil $filNew;
  done

 #ls -1
 foo-dev-1.3.10.war
 foo-dev-1.3.1.war
 foo-dev-1.3.2.war
 foo-dev-1.3.3.war
 foo-dev-1.3.4.war
 foo-dev-1.3.5.war
 foo-dev-1.3.6.war
 foo-dev-1.3.7.war
 foo-dev-1.3.8.war
 foo-dev-1.3.9.war

引用自:https://serverfault.com/questions/982552