在ubuntu中通过保留相对路径来重命名和复制特定文件。

13 浏览
0 Comments

在ubuntu中通过保留相对路径来重命名和复制特定文件。

我在项目目录中有几个.env.sample文件。

我想要通过保留相对路径将它们复制到.env中。

在之前的情况下:

.env.sample

apps

-- app

-- .env.sample

之后的情况是:

.env.sample
.env
apps
  -- app
  -- .env.sample
  -- .env

我已经尝试了类似于以下的一些方法:

find . -name .env.sample -exec cp {} $(echo {} | awk -F.sample '{print $1}') \;

但是它不起作用。我预期的cp命令的第二部分不起作用。可能需要一些关于转义特殊字符的内容。

如果有人能够解释我方法中的问题,我将不胜感激,并且我可以学到一些关于bash的新知识。

0
0 Comments

在Ubuntu中,有时我们需要重命名和复制特定的文件,并保留其相对路径。下面是一个解决这个问题的方法:

首先,我们可以使用以下命令来复制和重命名文件:

find . -name .env.sample -execdir sh -c 'cp -- "$1" "${1%.*}"' _ {} +

这个命令使用了find命令来查找当前目录及其子目录中名为.env.sample的文件。然后,-execdir选项告诉find命令在文件所在的目录中执行后续的命令。接着,我们使用sh -c来执行一个shell命令,其中$1表示找到的文件名,${1%.*}表示去除文件扩展名的文件名。最后,使用cp命令将文件复制到新的文件名。

此外,我们还可以通过查看understanding-the-exec-option-of-find来更深入地了解find命令中的-exec选项的用法和原理。

通过以上方法,我们可以在Ubuntu中重命名和复制特定的文件,并保留其相对路径。这对于文件管理和整理非常有用。

0