我需要重命名多个文件,而不知道文件的文件名(basename/string名称)。
我试过:
for i in $(ls /Users/Destiny/Desktop/Index/*.ebwt);
do
mv -v "$i" "${i/hsa/hsa.genome.V86C}"; ## works when i know the string to replace
done但是,如果不知道文件名(字符串名)怎么办?
重命名前: hsa.1.ebwt hsa.2.ebwt hsa.3.ebwt hsa.4.ebwt hsa.2.ebwt hsa.3.ebwt hsa.4.ebwt
重命名后的: hsa.genome.V86C.1.ebwt hsa.genome.V86C.2.ebwt hsa.genome.V86C.3.ebwt hsa.genome.V86C.1.ebwt hsa.genome.V86C.2.ebwt hsa.genome.V86C.3.ebwt hsa.genome.V86C.1.ebwt hsa.genome.V86C.2.ebwt hsa.genome.V86C.3.ebwt hsa.genome.v86C.1.ebwt hsa.genome.V86C.2.ebwt hsa.genome.v86C.3.ebwt hsa.genome.V86C.4.ebwt
发布于 2016-11-30 16:30:42
你可以在你的目录中找到一些东西。如果它们都有相同的扩展,那么在您当前的操作中,可能会出现下面这样的情况:
find /Users/Destiny/Desktop/Index -type f -name "*.ebwt" | while read file;
do
mv -v "$file" "${file/hsa/hsa.genome.V86C}";
done 这将在当前目录中重命名它,如果您想稍后将它移到另一个目录中,可以用basename包围第二个参数,以使移动更容易:
"/SomeDirectory/$(basename ${file/hsa/hsa.genome.V86C})"如果不希望查找目录是递归的,也可以在要查找的目录后面放置一个-maxdepth 1。
https://stackoverflow.com/questions/40891478
复制相似问题