如何在 Linux 上移动和部分重命名文件

如何在 Linux 上移动和部分重命名文件

我有来自构建管道的版本文件。

foo-1.3.4.war

我需要移动这些文件,让它们有名称

foo-dev-1.3.4.war

我该如何处理这个问题?

我在想类似的事情 mv foo-*.war foo-dev-*.war,但这只会创建带有 * 的文件。

有任何想法吗?

答案1

默认情况下,在大多数常见发行版中仅使用 bash 和命令:

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

答案2

这对我有用——也可以用 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

答案3

您可以使用 Perl 实现的rename程序(还有另一个程序,rename它是包的一部分util-linux),如下所示:

$ touch foo-1.3.{1..10}.war
$ ls -l
total 0
-rw-r--r-- 1 ja users 0 Sep  9 19:14 foo-1.3.1.war
-rw-r--r-- 1 ja users 0 Sep  9 19:14 foo-1.3.10.war
-rw-r--r-- 1 ja users 0 Sep  9 19:14 foo-1.3.2.war
-rw-r--r-- 1 ja users 0 Sep  9 19:14 foo-1.3.3.war
-rw-r--r-- 1 ja users 0 Sep  9 19:14 foo-1.3.4.war
-rw-r--r-- 1 ja users 0 Sep  9 19:14 foo-1.3.5.war
-rw-r--r-- 1 ja users 0 Sep  9 19:14 foo-1.3.6.war
-rw-r--r-- 1 ja users 0 Sep  9 19:14 foo-1.3.7.war
-rw-r--r-- 1 ja users 0 Sep  9 19:14 foo-1.3.8.war
-rw-r--r-- 1 ja users 0 Sep  9 19:14 foo-1.3.9.war
$ rename 's,^foo,foo-dev,' *
$ ls -l
total 0
-rw-r--r-- 1 ja users 0 Sep  9 19:14 foo-dev--1.3.1.war
-rw-r--r-- 1 ja users 0 Sep  9 19:14 foo-dev--1.3.10.war
-rw-r--r-- 1 ja users 0 Sep  9 19:14 foo-dev--1.3.2.war
-rw-r--r-- 1 ja users 0 Sep  9 19:14 foo-dev--1.3.3.war
-rw-r--r-- 1 ja users 0 Sep  9 19:14 foo-dev--1.3.4.war
-rw-r--r-- 1 ja users 0 Sep  9 19:14 foo-dev--1.3.5.war
-rw-r--r-- 1 ja users 0 Sep  9 19:14 foo-dev--1.3.6.war
-rw-r--r-- 1 ja users 0 Sep  9 19:14 foo-dev--1.3.7.war
-rw-r--r-- 1 ja users 0 Sep  9 19:14 foo-dev--1.3.8.war
-rw-r--r-- 1 ja users 0 Sep  9 19:14 foo-dev--1.3.9.war

相关内容