
我請求你幫忙解決我的問題,因為我陷入困境。我向你解釋一下這種情況:我想複製在第二個文件中指定的特定子目錄中的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