Прошу вашей помощи в решении моей проблемы, потому что я застрял. Я объясняю вам ситуацию:Я хочу скопировать файлы, путь к которым у меня есть в txt-файле в определенные подкаталоги, указанные во втором файле (У меня также есть полный файл csv, включающий эти 2 столбца:имя файла подкаталоги($value1
), путь к файлу($value2
))
Я смог автоматически создать подкаталоги с помощью этой команды:
xargs mkdir -p </scripts/repertoires.csv
Я знаю, как скопировать все файлы в один каталог с помощью этой команды:
cat /scripts/fichiers.csv | xargs -I% cp% / destinationfolder
Но я не могу скопировать каждую строку, соответствующую в файл в подкаталоге, который ему подходит, Чтобы было понятнее, я хочу скопировать $value2
в папку /destination/$value1
В прошлом я делал это, используя 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