我尝试使用
递归重命名文件夹中的文件find . -iname "*bw" -exec rename /accepted_hits.bw .bw '{}' \;
我想用相应的文件夹名称
更改每个文件夹中的文件名例如。 test1 / accepted_hits.bw到test1.bw
答案 0 :(得分:2)
尝试此命令:
find . -iname "accepted_hits.bw" | while read file; do dir=$(basename $(dirname $file)); mv $file ${dir}.bw; done
其中:
find
命令搜索名称为“accepted_hits.bw”的递归文件-i
选项表示不区分大小写|
表示find
命令的输出是while
命令的输入while read file
循环,并在do
和done
之间执行命令 find
命令将输出:
./a/accepted_hits.bw
./b/accepted_hits.bw
所以命令块将执行两次。第一行的dirname $file
获取./a
,dir=$(basename $(dirname $file))
是目录的名称,在此示例中为a
。
mv
命令在accepted_hits.bw
目录中移动文件.
,并将其重命名为${dir}.bw
使用man
命令查看每个命令的手册页。