次の2つの投稿に続きます。
https://askubuntu.com/questions/870844/recursively-add-directory-name-to-file-name
私は同じことをしたいのですが、移動の代わりにコピーしたいです。簡単に言えば、サブディレクトリがあるディレクトリと、内部にいくつかのファイルがあるサブサブディレクトリがあります。すべてのファイルを別の宛先フォルダにコピーしたいのですが、一部のファイルの名前が正しいため、親ディレクトリの名前をファイル名の前にプレフィックスとして追加したいと思います。
Ubuntu 16.04で実行中です。
ベストアンサー1
努力する:
find -name "*.dat" -exec bash -c 'echo cp "$1" "$(sed -e s:/:-:g -e s:^.-:./: <<<"$1")"' tinyscript {} \;
(コマンドが大丈夫に見える場合は「echo」を削除してください)
.
└── 1
└── 2
├── 3
│ └── 4
│ └── foo.dat
└── foo.dat
生産する:
cp ./1/2/3/4/foo.dat ./1-2-3-4-foo.dat
cp ./1/2/foo.dat ./1-2-foo.dat
デフォルトでは、cp "$1" "$(sed -e s:/:-:g -e s:^.-:./: <<<"$1")"
ソースパスのすべてのエントリを 。/
-
tinyscript