高级情侣cp昵称符号:使用保留父结构的 cp创建符号链接

我有以下文件夹结构:

.
`-- top_level/
    |-- sub-01_ses-01/
    |   `-- filtered_data.tar.gz*
    |-- sub-01_ses-02/
    |   `-- filtered_data.tar.gz*
    |-- sub-02_ses-01/
    |   `-- filtered_data.tar.gz*
    |-- sub-02_ses-02/
    |   `-- filtered_data.tar.gz*

我想创建符号链接到这些文件保留父结构(因为它们都具有相同的文件名)。这是我尝试的:

find -name "filtered_data.tar.gz" \
     -exec cp -s --parents --no-clobber -t /home/data/filtered {} \;

现在,我注意到 cp 确实创建了父结构,但符号链接失败,我得到以下通知:

cp:'/home/data/filtered/./sub-01_ses-01/filtered_data.tar.gz':只能在当前目录中建立相对符号链接

我想了解为什么这是 hapenning,以及cp警告试图告诉我什么。

1

在这里找到解决方案:symlink-copying a directory hierarchy

文件到cp的路径必须是绝对的,而不是./something

find $(pwd) -name "filtered_data.tar.gz" \
     -exec cp -s --parents --no-clobber -t /home/data/filtered {} \;

根据你对你真正想要做的事情的评论,这里有一个 Python 脚本。你应该能够调整它。

#!/usr/bin/env python3
import os
target_filename = 'filtered_data.tar.gz'
top_src_dir = '.'
top_dest_dir = 'dest'
# Walk the source directory recursively looking for
# target_filename
for parent, dirs, files in os.walk(top_src_dir):
    # debugging
    # print(parent, dirs, files)
    # Skip this directory if target_filename not found
    if target_filename not in files:
        continue
    # Strip off all path parts except the immediate parent
    local_parent = os.path.split(parent)[-1]
    # Compute the full, relative path to the symlink
    dest_file = os.path.join(top_dest_dir, local_parent, target_filename)
    # debugging
    # print('{} {}'.format(dest_file, os.path.exists(dest_file)))
    # Nothing to do if it already exists
    if os.path.exists(dest_file):
        print('{} already exists'.format(dest_file))
        continue
    # Make sure the destination path exists
    dest_dir = os.path.dirname(dest_file)
    os.makedirs(dest_dir, exist_ok=True)
    # Translate the relative path to target_filename
    # to be relative based on the new destination dir
    src_file = os.path.join(parent, target_filename)
    src_file = os.path.relpath(src_file, start=dest_dir)
    os.symlink(src_file, dest_file)
    print('{} --> {}'.format(dest_file, src_file))

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(668)
Matlab打开csv文件:使用MATLAB读取CSV文件
上一篇
Ck影院_国内剧情:QQ剧情分布检查(qq convenience)
下一篇

相关推荐

  • cvt变速箱结构图解:CVT变速箱的工作原理

    CVT变速箱是一种无级变速箱,它的结构由两个部分组成:输入轴和输出轴。输入轴由发动机驱动,输出轴将变速箱的输出转移到车轮上。输入轴上安装有一个可变的滑轮,它可以改变输入轴的传动比,从而改变变速箱的输出比。另外,输入轴上还安装有一个液压系统,它可以控制滑轮的位置,从而改变输入轴的传动比。…

    2023-04-02 04:00:04
    0 27 17
  • xcode代码格式化快捷键:使用Command + I快速格式化Xcode代码

    格式化的方法格式化的方法Xcode代码格式化快捷键:Option+Command+F…

    2023-07-13 12:44:06
    0 27 72
  • cv树洞柒夜事件CV树洞中的秘密与惊奇

    cv树洞柒夜事件是一个有趣的计算机视觉活动,它提供了一种新的方式来利用计算机视觉技术来探索和发现景观。它始于2020年7月,由一群热爱计算机视觉的研究者和开发者发起,他们希望通过使用机器学习技术来探索景观中的精彩之处。cv树洞柒夜事件的目标是使用机器学习技术来探索景观中的精彩之处,并利用这些发现来改善景观设计。参与者需要使用机器学习技术来探索景观,并利用这些发现来改善景观设计。参与者可以使用Python,OpenCV,TensorFlow等技术来完成任务,并将其发布在GitHub上。…

    2023-01-09 12:42:42
    0 21 85
  • win10怎么cmd打开设置:如何在Windows 10中使用CMD打开设置

    打开“开始”菜单,点击搜索框,输入cmd,然后按下回车键。在弹出的命令提示符窗口中,输入以下代码:start ms-:…

    2023-06-07 01:59:36
    0 47 31
  • win7安装cad2020:如何在Windows 7上安装AutoCAD 2020

    从官网下载CAD 2020的安装包,并双击安装文件;按照安装向导的提示,选择安装语言、安装位置和安装类型;…

    2023-09-28 00:41:59
    0 61 33
  • java protected关键字:使用protected关键字保护类成员的优点

    示例示例关键字是java中的修饰符,它可以修饰类、变量和方法。修饰类:修饰的类只能在同一个包内被访问,如果子类继承了修饰的父类,则子类可以在不同包内访问父类的成员。…

    2023-04-18 04:45:37
    0 63 94
  • codeblocks手机版下载一款强大的跨平台编程工具

    CodeBlocks是一款免费的、开源的、跨平台的C/C++ IDE,支持多种编程语言,可以用来编写、调试和编译代码。目前CodeBlocks的手机版本只支持Android系统,而且只支持C语言,不支持C++。…

    2023-06-25 04:48:50
    0 25 23
  • go和come的区别:去吧!来吧!改变你的未来

    示例示例go和come的区别:Go是一个动词,表示“去”的意思,指的是从一个地方到另一个地方的运动。Come是一个动词,表示“来”的意思,指的是从另一个地方到当前地方的运动。…

    2023-05-25 16:09:00
    0 64 16

发表评论

登录 后才能评论

评论列表(68条)