高级情侣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))

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

(7)
Matlab打开csv文件:使用MATLAB读取CSV文件
上一篇
Python如何绘制饼图:绘制饼图(drawing of pie)
下一篇

相关推荐

  • linux切换到超级用户:```shecho 'Hello World' > hello_world.txt```

    Linux切换到超级用户的方法有两种:使用su命令:…

    2023-03-24 09:03:15
    0 22 36
  • cv树洞柒夜事件CV树洞中的秘密与惊奇

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

    2023-01-09 12:42:42
    0 66 13
  • code键 A Guide to Success

    示例示例code键是一个特殊的键,它可以用来输入代码。它通常位于键盘的右上角,并且有一个特殊的图标,如“#”或“@”。下面是一个简单的代码示例,使用code键来输入代码:…

    2023-03-24 02:28:58
    0 88 62
  • cvt变速箱异响:排查CVT变速箱异响的方法

    cvt变速箱异响是指变速箱在运行时发出的异常噪音,这种异响可能是由于变速箱内部零件磨损、油质不佳或润滑不良等原因引起的。代码如下:…

    2023-02-13 07:48:44
    0 88 44
  • cheers for还是to:Cheers to a Bright Future!

    示例示例Cheers for和to都可以用来表达祝福或者庆祝的意思。Cheers for:表示对某人或某事的支持,是一种赞扬的表达方式。…

    2023-02-27 02:56:18
    0 28 87
  • css初始化样式:This is a Title

    示例示例CSS初始化样式是指在各浏览器中重置默认的样式,以便于在所有浏览器中保持一致的显示效果。下面是一个常用的CSS初始化样式代码:…

    2023-01-12 02:04:17
    0 77 50
  • for循环continue:How to Use the continue Statement in a for Loop

    示例示例for循环是让程序跳过当前循环,继续下一次循环。代码示例:…

    2023-02-26 12:04:08
    0 85 64
  • linux使用yum安装httpd:如何使用yum安装Apache HTTP Server (httpd)

    使用yum安装httpd:打开终端,输入以下命令:…

    2023-01-11 11:09:38
    0 47 70

发表评论

登录 后才能评论

评论列表(61条)