Linux は、ファイルのテキスト リストから特定のファイルをテキスト リストからサブディレクトリに cp しますか?

Linux は、ファイルのテキスト リストから特定のファイルをテキスト リストからサブディレクトリに cp しますか?

行き詰まっているので、問題を解決するためにあなたの助けを求めます。状況を説明します。txt ファイルにあるパスのファイルを、2 番目のファイルで指定された特定のサブディレクトリにコピーしたいのです (サブディレクトリの名前 ( $value1)、ファイル パス ( $value2) の 2 つの列を含む完全な csv ファイルもあります)

次のコマンドを使用してサブディレクトリを自動的に作成できました。

xargs mkdir -p </scripts/repertoires.csv

次のコマンドを使用して、すべてのファイルを 1 つのディレクトリにコピーする方法を知っています。

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

しかし、適切なサブディレクトリ内のファイルに対応する各行をコピーすることはできません。より明確にするために、$value2/destination folder/にコピーしたいと思います。$value1

答え1

私が過去にこれを行った方法はtar仲介者を使用することですが、これよりもエレガントな他の回答があるはずです。

特定の基準を満たすファイルのリストがある場合、例:/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

最初のものは、ファイルへの完全なパスの行ごとのリストを想定し、標準出力に tarball を作成する をtar受け取ります。--files-from

2 番目は、tar宛先パスに切り替えて-C、パイプから受信した tarball を解凍します。

これにより、次の出力が生成されます ( -v2 番目の 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

関連情報