我有一个包含以下内容的目录:
/B7_001
/B7_002
B7_001_name.mat
B7_002_name.mat
此目录中的每个子目录都具有以下结构:
/B7_001/results_activity/sham/task/
/B7_002/results_activity/sham/task/
我想将每个文件复制或移动到与名称的第一部分匹配的子目录的子目录树中。
例如,将文件“ B7_001_name.mat”复制到/ B7_001 / results_activity / sham / task /中。
我的以下代码并没有取得太大的成功,因此任何提示将不胜感激。谢谢!
for i in B7_*
do
cp ${i}_name.mat /${i}/results_activity/sham/task/
done
尝试了解以下内容:
shopt -s nullglob # play it safe when using globs
for i in B7_*_name.mat; do
echo "i=$i"
d=${i%_name.mat}
echo "d=$d"
echo mv "$i" "/$d/results_activity/sham/task"
done
按原样运行,它是无害的,不会执行任何操作;只在终端上打印一些东西。
for i in B7_*_name.mat
:这是一个for
循环,变量i
将连续获取与glob匹配的文件名B7_*_name.mat
。使用此变量,我们_name.mat
使用shell参数扩展删除该部分:
d=${i%_name.mat}
这意味着d
是扩展$i
,其中拖尾(因为%
)_name.mat
被去除。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句