在ubuntu中通过保留相对路径来重命名和复制特定文件。
在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的新知识。
在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中重命名和复制特定的文件,并保留其相对路径。这对于文件管理和整理非常有用。