Bash 将文件从一个目录复制/粘贴到另一个目录

Bash 将文件从一个目录复制/粘贴到另一个目录,bash,copy,copy-paste,Bash,Copy,Copy Paste,你能告诉我我的简单代码有什么问题吗?(麦克巴什) 我正在尝试将所有名为vol_0000.nii的文件从一个目录复制到另一个目录。我将变量文件名替换为“*”。所有文件(vol_0000.nii)都有相同的名称,但它们位于不同的文件夹中(用“*”表示)。我不确定它们在复制时是否相互替换,因为它们具有相同的cp创建名称,例如vol_00001.nii、vol_00002.nii等等 cp /Users/dave/biomkr/dat/*/rs/orig/vol_0000.nii /Users/dave

你能告诉我我的简单代码有什么问题吗?(麦克巴什)

我正在尝试将所有名为vol_0000.nii的文件从一个目录复制到另一个目录。我将变量文件名替换为“*”。所有文件(vol_0000.nii)都有相同的名称,但它们位于不同的文件夹中(用“*”表示)。我不确定它们在复制时是否相互替换,因为它们具有相同的cp创建名称,例如vol_00001.nii、vol_00002.nii等等

cp /Users/dave/biomkr/dat/*/rs/orig/vol_0000.nii /Users/dave/Documents/MIT_Har_stu/rsfmri

类似这样的东西应该可以完成这项工作,使用与您在问题中提到的类似的编号行为

#!/bin/bash
i=0
for src in /Users/dave/biomkr/dat/*/rs/orig/vol_0000.nii
do
    dest=$(basename "$src")
    dest=${dest/.nii/_$i.nii}
    cp "$src" "/Users/dave/Documents/MIT_Har_stu/rsfmri/$dest"
    let i++
done
另一个选项是根据原始glob中替换为
*
的目录名创建一个子目录,我们只需稍加修改即可获得


可能是在点上,所以除了数字问题,如果Vol有不同的数字,我的代码应该工作吗?是的,假设你有
/Users/dave/biomkr/dat/a/rs/orig/Vol_0000.nii
/Users/dave/biomkr/dat/b/rs/orig/Vol_0000.nii
,做
cp/Users/dave/biomkr/dat/*/rs/orig/vol_0000.nii/Users/dave/Documents/MIT_Har_stu/rsfmri
将扩展到
cp/Users/dave/biomkr/dat/a/rs/orig/vol_0000.nii/b/rs/orig/vol_0000.nii/Users/dave/Documents/Documents/MIT_Har stu/rsfmri
a
可以切换订单)这将首先将
a
中的文件复制到
rsfmri
中,然后将其与
b
中的文件重叠。您可以
执行cp-iv
,这将提示您是否要覆盖并使其更详细是的,cp对不起!好的,我试试cp-iv。谢谢!哇,它确实问了我,但我只试了500个文件,并说不要覆盖,但它不起作用!!!在完成所有这些Nos和消息“NotOverwrited”之后,我打开了目标文件,只找到了一个vol!!!非常感谢。第一个没有错误,但输出只有一个vol文件!我试试第二种。此外,输出是vol_0000.nii.0>,这与我想要的不同。这一个改变了实际的扩展名。输出列看起来与原始vol文件不同!好的,我把最后一部分改为“$dest_u$i.nii”,它成功了!谢谢,我一有足够的声誉就投你一票!:)很乐意帮忙。您可以在任何声誉级别将答案标记为已接受。这表示问题已结束,并将为您提供一些代表。
#!/bin/bash
for src in /Users/dave/biomkr/dat/*/rs/orig/vol_0000.nii
do
    srcdir=${src#/Users/dave/biomkr/dat/}
    srcdir=${srcdir%/rs/orig/vol_0000.nii}
    srcdir="/Users/dave/Documents/MIT_Har_stu/rsfmri/$srcdir/"
    mkdir -p "$srcdir"
    cp "$src" "$srcdir"
done