我正在尝试将特定文件从当前目录复制到父目录。问题是所有文件都具有相同的名称,因此我需要添加前缀,以便文件在复制后可识别:
目录结构-
我想要什么-
“mri”文件夹及其其他内容可以保持原样。
我尝试过:
find . -type f -name 'brain.mgz' -exec sh -c '
for file; do
parentdir=${file%/*}
parentdir=${parentdir%/*}
dirname=${parentdir##*/}
cp "$file" "$parentdir/${dirname_file}${dirname}_${dirname_file}"
done
' sh {} +
这部分完成了工作。它将文件带出到带有前缀但不带文件扩展名的父目录。所以结果就是——
看起来文件正在被复制,但没有原始名称和扩展名(没有 Brain.mgz 部分),这违背了目的。
我做错了什么?我相信这与循环中的“cp”命令有关?
您正在寻找这样的东西:
find . -type f -name 'brain.mgz' -exec sh -c '
for src; do
dst=${src%/*/*}
dst=$dst/${dst##*/}_${src##*/}
echo cp "$src" "$dst"
done' sh {} +
如果输出看起来不错,则删除
echo
。