因此,我需要编写一个 bash 脚本,将所有文件复制到指定目录,但是我需要通过将/
字符替换为__
.
例如,如果文件zad1.sh
在目录中/home/123456/
,则需要将文件重命名为__home__123456__zad1.sh
关于如何做到这一点的任何想法?
因此,我需要编写一个 bash 脚本,将所有文件复制到指定目录,但是我需要通过将/
字符替换为__
.
例如,如果文件zad1.sh
在目录中/home/123456/
,则需要将文件重命名为__home__123456__zad1.sh
关于如何做到这一点的任何想法?
要获取文件的路径:
在 bash 中替换:
前两个斜线用于进行全局搜索。使用 just
/
只会做一次替换。所以你的代码可能是
我相信这将完成您的要求:
将
_from_dir
变量设置为文件所在的路径,并将_to_dir
变量设置为要复制它们的路径。循环将遍历该
_from_dir
位置中的每个文件。nfile
将采用文件的完整路径并替换/
为__
. 然后它将cp
文件放入_to_dir
路径中,其名称代表其来源的完整路径。经典的方法是使用 sed:
如果您不一定总是使用 bash,那么优势主要是跨 shell 的可移植性。
当然,它也可以让你放弃脚本,只用 find 来完成:
Find 具有排序和过滤选项,如果您需要它们仅复制某些文件,您可以使用它们。
编辑:该查找设置适用于我的一个系统,但不适用于另一个系统。我没有理清区别,而是让它更便携:
我已经通过以下方法完成
这里文件 /root/l.txt 将被复制到 /root/p1/ 路径,但文件名将是 _root_l.txt 如有任何混淆,请告诉我