あるフォルダから別のフォルダにコピーされた各ファイルのファイルパスを取得します。

あるフォルダから別のフォルダにコピーされた各ファイルのファイルパスを取得します。

私はUbuntu 18.04 LTSを使用しており、あるフォルダから別のフォルダにファイルをコピーしたいので、フォルダ1からフォルダ2にコピーされた各ファイルのファイルパスをスペースを区切り文字として3番目のファイルに保存しようとしています。
注:cpコマンドは出力を返さないため、ファイルに保存すると機能しません。

端末から実行できるコマンドまたはスクリプトの組み合わせを使用できます。

他のソフトウェアを提案しないでください。

ベストアンサー1

POSIXコマンドを使用し、ファイル名とディレクトリ名に改行文字が含まれていないとします。

src=/some/dir
dst=/some/other/dir
file_list=/path/to/list.txt
(cd -P -- "$src" && find . |
  tee -- "$file_list" |
  pax -rwdpe -- "$dst")

$srcパスはまたはディレクトリに相対的です$dst(既存に存在する必要があります)。

GNUの実装cp(Ubuntuに見られるように)には、-v自分が何をしているのかを知らせるオプションがあります。

LC_ALL=C cp -va -- "$src" "$dst" > "$file_list"

以下を含むコンテンツを作成しますlist.txt

'/some/dir' -> '/some/other/dir'
'/some/dir/file' -> '/some/other/dir/file'
[...]

別のオプションは次のものを使用することです(標準コマンドではありませんが、UbuntuはtarデフォルトでGNUに付属しています)。tar

(cd -P -- "$src" && tar cf - .) |
  (cd -P -- "$dst" && tar xvf - > "$file_list")

おすすめ記事