ʕ•ᴥ•ʔ RUNNINGJ

Linux中cp命令没有复制所有文件的问题

最近需要在iPhone上查看Mac端obsidian的内容,按照官方流程,需要先在iPhone上将建立新的vault,然后在电脑端,将旧的笔记目录中的内容拷贝至新的目录,弃用旧目录,使用新目录即可。

但通过如下命令拷贝笔记库时发现,打开新的vault,ob界面和旧库差别很大,相关的插件也没安装配置。

$ cp -R <src_dir>/* <dst_dir>

仔细对比目录发现,.obsidian目录没有被拷贝。印象中cp *应该是可以拷贝所有文件。在stackexchange上发现类似问题链接,原来是*不会包含.开头的文件,即不会包含隐藏文件和目录。

知道原因,可以通过以下方式拷贝目录下所有文件。

方法1

$ cp -R <src_dir>/ <dst_dir>

方法2

$ cp -R <src_dir>/* <dst_dir>
$ cp -R <src_dir>/.* <dst_dir>

方法3

$ shopt -s dotglob
$ cp -R <src_dir>/* <dst_dir>

小结

bash中*的扩展,不会包含.开头的文件。

#bash