我有一个名为“ Experiment ”的主目录,其中我保留了几个子文件夹,如“ time_data ”,然后是几个子文件夹“ bacterial_strain “并且最终”药物浓度“写成” 0.5 mM “。所以最后的路径是:
/Experiment/time_data/bacterial_strain/0,5 mM
我想将所有子目录中的所有目录从“0,5 mM”重命名为“0,7 mM”
我尝试运行几个不同的管道:
find . -type d | grep 0,5 | mv "0,5 mM/" "0,7 mM/"
或
grep -r "0,5 mM" "/path_to_Experiment_folder" | mv 0,5\ mM 0,7\ mM
但终端也犯了同样的错误:
mv: rename 0,5 mM to 0,7 mM: No such file or directory
请帮助我,如何改变管道才能做到这一点?
答案 0 :(得分:1)
您可以尝试这样的事情:
myArray.sort(function(i1, i2) {
return i1.index > i2.index;
});
myArray.sort(function(i1, i2) {
return i1.y > i2.y;
});
值得注意的事情:
find . -depth -type d -name "0,5mM*" -exec mv {}
Experiment/time_data/bacterial_strain/drug_concentration/0,7mM \;
。使用空格并使用空格执行0,5 mM
的{{1}}命令对我不起作用。我不知道为什么。出于测试目的,我删除了空格字符并且上面的命令工作,也是一个类似的命令,我刚刚分开以查看可见性,我相信它会被弄清楚,但不过;)。find
。我认为所有目录的深度都是相同的,如果没有,那么你可以进一步探索-exec mv
选项。我希望这适合你。
答案 1 :(得分:0)
这应该有效:
$ find . -type d -name 0,5\ mM -print | while read dir ; do mv -v "${dir}" "${dir/0,5/0,7}" ; done
答案 2 :(得分:0)
另一种方式是:
for f in Experiment/*/*/0,5\ mM; do nf=$(dirname "$f")/0,7\ mM; mv "$f" "$nf"; done
或(如果您还有' 0.5 mM'名称,您不想重命名):
for f in Experiment/*/*/0,5\ mM; do if [ -d "$f" ]; then nf=$(dirname "$f")/0,7\ mM; mv "$f" "$nf"; fi; done
Here你可以找到其他方法来做到这一点。