将文件从一个目录复制/粘贴到另一个目录
你能告诉我我的简单代码有什么问题吗? (Mac Bash)将文件从一个目录复制/粘贴到另一个目录
我想将所有名为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
另一种选择是创建一个子目录,基于原有的水珠,我们可以用一个小string replacement得到*
取代目录名。
#!/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
谢谢。第一个没有给出错误,但输出只有一个卷文件! 将尝试第二个。 此外,输出是vol_0000.nii.0>这是我想要的不同。这个改变了实际的扩展。输出col看起来不同于原始的vol文件! – tsumaranaina
好吧,我把最后一部分改为“$ dest_ $ i.nii”,它工作! 谢谢,只要我有足够的声誉,我就投你一票! :) – tsumaranaina
很高兴提供帮助。您可以将答案标记为在任何声望级别接受。这表明问题已经结束,并且也会给你一些代表。 – miken32
[这个问题](http://*.com/q/12187859/3076724)可能是对点 – BroSlow
所以除了数量问题,应我的代码工作,如果该卷有不同的数字? – tsumaranaina
是的,假设你有'/ 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 /Users/dave/biomkr/dat/b/rs/orig/vol_0000.nii/Users/dave/Documents/MIT_Har_stu/rsfmri'('a','b',order may be switched)which will first将'a'中的文件复制到'rsfmri',然后用'b'中的文件将其覆盖。你可以'执行cp -iv',如果你想覆盖并且更加详细,它会提示你 – BroSlow