使用cp保留父结构

时间:2017-06-21 19:10:10

标签: shell 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':只能在当前目录中创建相对符号链接

我想了解为什么会这样,以及cp警告试图告诉我的内容。此外,非常感谢任何有关如何解决问题的指示。

1 个答案:

答案 0 :(得分:1)

在此处找到解决方案:symlink-copying a directory hierarchy

文件到<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Nuevo"></activity> <activity android:name=".MapActivity"></activity> <meta-data android:name="com.google.android.geo.AIza*****************" android:value="AIza*****************"/> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> </application> <uses-permission android:name="android.permission.INTERNET"/> <permission android:name="chtecnologies.app0.permission.MAPS_RECEIVE" android:protectionLevel="signature" /> <uses-permission android:name="chtecnologies.app0.permission.MAPS_RECEIVE" /> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-feature android:glEsVersion="0x00020000" android:required="true"/> 的路径必须是绝对路径,而不是cp。所以,这应该适合你:

./something

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

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