Linux cp 特定檔案從文字清單中的檔案到子目錄中的文字清單嗎?

Linux cp 特定檔案從文字清單中的檔案到子目錄中的文字清單嗎?

我請求你幫忙解決我的問題,因為我陷入困境。我向你解釋一下這種情況:我想複製在第二個文件中指定的特定子目錄中的txt文件上的路徑的文件(我還有一個完整的csv文件,包括這兩列:子目錄的名稱($value1),檔案路徑( $value2))

我能夠使用以下命令自動建立子目錄:

xargs mkdir -p </scripts/repertoires.csv

我知道如何使用以下命令將所有文件複製到單一目錄:

cat /scripts/fichiers.csv | xargs -I% cp% / destinationfolder

但我無法複製與適合它的子目錄中的檔案相對應的每一行,為了更清楚,我想複製$value2到 /destinationfolder/$value1

答案1

我過去這樣做的方式是用作tar中間人——但我確信還有其他比這更優雅的答案。

我們有符合特定標準 IE 的文件清單:/usr中所有小於1M的文件

$ find /usr -type f -size -1M

就是我們要複製到的位置/mnt/dst

您可以使用 tar 作為向量來打包/解包資料。 IE

$ find /usr -type f -size -1M | tar --files-from=- -c | tar -xv -C /mnt/dst

第一個tar取得--files-from需要檔案完整路徑的逐行列表,並建立一個到標準輸出的 tarball。

第二個tar切換到目標路徑-C並解壓縮從管道接收的 tarball。

這會產生以下輸出(-v在第二個 tar 命令中使用時)。

usr/lib/grub/i386-pc/fdt.lst
usr/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__init__.py
usr/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/__init__.py
usr/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py
usr/lib/python3.6/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py
usr/lib/python3.6/site-packages/pip/operations/__init__.py
usr/lib/python3.6/site-packages/pkg_resources/_vendor/__init__.py
usr/lib/python3.6/site-packages/setuptools/_vendor/__init__.py
usr/lib/python3.6/site-packages/slip/__init__.py
usr/lib/python3.6/site-packages/slip/_wrappers/__init__.py
usr/lib/python3.6/site-packages/asn1crypto/_perf/__init__.py
...
...

產生的目標目錄會產生(為了可讀性而修剪)樹,這應該是您正在尋找的內容。

# tree -L 3 /mnt/dst
/mnt/dst
└── usr
    ├── lib
    │   ├── grub
    │   ├── node_modules
    │   └── python3.6
    ├── lib64
    │   └── python3.6
    ├── local
    │   └── share
    └── share
        ├── crypto-policies
        ├── doc
        ├── groff
        ├── microcode_ctl
        ├── mime
        ├── pki
        ├── texlive
        ├── texmf
        ├── vim
        └── X11

20 directories, 0 files

相關內容