今天与同学聊天时,听说了一个有趣的需求:复制指定目录中的所有目录文件到另一个指定的目录中.由于只复制目录,并不能用cp,mkdir等命令来解决,看来只能乖乖地写一个程序了..
c版
c语言写目录拷贝程序好复杂…不过效率确实很高,在其它语言中可能需要用系统调用执行mkdir,ls -l命令,而c语言则全都使用Linux本身的api接口…
这里主要使用了nftw函数,mkdir函数,chown函数.其中nftw函数是高级函数,用于遍历整个目录树,并提供一个回调函数用于处理目录树中的每个文件
1 | //get nftw() and S_IFSOCK declarations |
值得注意的是符号链接,这种情况下nftw()函数默认是解引用符号链接,即把符号链接当成一个目录来看待.如果有其他需求的话,可以添加FTW_PHYS标志位用于进一步错误
shell版
感觉到了shell的强大???比c不知道简单到哪边去了…学习c的动力-1
1 | !/bin/bash |
小结
这算是一个小的题目吧…中间查了好多资料,我确实感觉到了自身能力的不足
明日学习目标:docker-compose