【问题标题】:Copy files to directory and add path name to file name将文件复制到目录并将路径名添加到文件名
【发布时间】:2017-03-23 12:34:24
【问题描述】:

我有多个 zip 文件,每个文件都包含同名的文件,但这些 zip 文件具有唯一的名称。我想要做的是将多个 zip 中的所有同名文件放在一个目录中,但通过将 zip 文件夹名称添加到文件名来保留它们来自哪个 zip。此外,zip 不一定具有相同的文件夹结构 - 具有相同名称的文件可以位于 zip 内的任何文件夹中(但我不需要保留中间文件夹名称)。

比如说我有

-> zip1 - folder1 - file1
                  - file2
-> zip2 - file1
        - file2

那么我想要的是在一个目录中获取以下文件以及连接名称:

- zip1file1
- zip1file2
- zip2file1
- zip2file2

'folder1' 没有 可以忽略,但我真的不在乎,zip 文件夹的名称中包含重要信息。

到目前为止,我已经完成了

for zip in *.zip; do unzip "$zip" -d "${zip%.zip}"; done

将所有 zip 解压缩到它们自己的唯一文件夹中,并使用我想要保留的名称。然后我可以使用“查找”从包含所有解压缩文件的目录中找到所有相关文件的列表:

find . -name 'file1.m'

但我不知道如何将这个“查找”的结果移动到新目录中,并将它们所在文件夹的名称添加到他们的文件名中。

【问题讨论】:

    标签: unix


    【解决方案1】:

    我会努力的

    myfiles 是移动文件的目录。 不是单线,但应该可以工作

    DEST="./myfiles"
    mkdir -p $DEST
    find zip* -type f | while read f
    do
      mv $f $DEST/${f//'/'}
    done
    

    会做的:

    mv zip1/folder1/file2 ./myfiles/zip1folder1file2
    mv zip1/folder1/file1 ./myfiles/zip1folder1file1
    mv zip2/file2 ./myfiles/zip2file2
    mv zip2/file1 ./myfiles/zip2file1
    

    【讨论】:

    • 感谢您的回答,但运行后myfiles文件夹仍然是空的,并且我反复收到usage: mv [-f | -i | -n] [-v] source target mv [-f | -i | -n] [-v] source ... directory警告
    猜你喜欢
    • 2018-07-16
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 2019-11-11
    • 2021-08-13
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    相关资源
    最近更新 更多