首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >cp =文件夹编号

cp =文件夹编号
EN

Unix & Linux用户
提问于 2013-11-29 15:00:22
回答 2查看 11.6K关注 0票数 11

要用数字后缀备份现有文件,我可以执行以下操作:

代码语言:javascript
运行
复制
cp --backup=numbered afile /path/to/dest

但是,当我试图对文件夹执行同样的操作时,这种情况就不适用了:

代码语言:javascript
运行
复制
cp -R --backup=numbered afolder /path/to/dest

我怎样才能做到这一点?

也许我应该展示一下我想要达到的目标。首先,我们有两个脏东西:

代码语言:javascript
运行
复制
ls -ld source container
drwxrwxr-x 6 kaiyin kaiyin 4096 Nov 29 22:11 container
drwxrwxr-x 2 kaiyin kaiyin 4096 Nov 29 22:09 source

然后我们这样做:

代码语言:javascript
运行
复制
myPerfectCp -R --backup=numbered source container/
myPerfectCp -R --backup=numbered source container/
myPerfectCp -R --backup=numbered source container/
myPerfectCp -R --backup=numbered source container/

理想情况下,我希望得到这样的结果:

代码语言:javascript
运行
复制
tree container/
container/
├── source
├── source.~1~
├── source.~2~
└── source.~3~
EN

回答 2

Unix & Linux用户

发布于 2014-12-17 03:03:43

尝试:

代码语言:javascript
运行
复制
find source -type f -exec cp --backup=numbered -- {} container/ \;
票数 2
EN

Unix & Linux用户

发布于 2013-11-30 01:19:41

虽然在bash中可以做到这一点,但我更像是个蟒蛇,所以我的建议如下:

代码语言:javascript
运行
复制
#!/usr/bin/env python
import glob
import os
import sys


def cpdir(source, target):
    if target.endswith('/'):
        if not os.path.isdir(target):
            print "Target directory doesn't exist: %s" % target
            sys.exit(1)
        target += source
    if '--backup=numbered' in sys.argv:
        dirs = glob.glob(target + '.~*~')
        if not dirs:
            num = 1
        else:
            num = max([int(dir.split('~')[-2]) for dir in dirs]) + 1
        target += '.~%s~' % num
    cmd = 'cp -a %s %s' % (source, target)
    #print cmd
    rv = os.system(cmd)
    sys.exit(rv)

def main():
    if len(sys.argv) < 3:
        print "Usage: %s [--backup=numbered] <source> <dest>" % sys.argv[0]
        sys.exit(1)
    source = sys.argv[1]
    target = sys.argv[2]
    return cpdir(source, target)

if __name__ == '__main__':
    sys.exit(main())
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/103078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档