目录或文件的移动及重命名
一般情况下可以使用mv命令,涉及大批量文件的重命名时一般会选用rename命令,下面是这两个命令的简单用法。
mv:移动或者重命名文件
移动文件或目录
划线部分为需要移动的目录或文件,使用移动功能时,最后一个参数一定是目标目录
文件或目录的重命名
常用参数:
-f 覆盖目标文件时不提示
没有提示,直接覆盖了同名的目标文件
-i 询问是否覆盖目标文件
覆盖前有提示
-n 不覆盖目标文件
没有覆盖目标
注意:如果以上三个参数同时存在,那么只有最后一个参数生效。
-b 备份目标文件
多出了test1~,这个是原test1的备份
-S 一般目标文件备份时,后缀是~,用这个参数可以指定后缀
原来的test重命名为test1,而原来的test1备份为test1.backup
注意,在重命名目录时,若目标目录存在,那么你实际上是将目录移动到了目标目录
rename:批量文件重命名
一般用法:rename正则表达式文件
常用参数:
-n 只输出修改后的文件名,不实际执行重命名
-o 不覆盖同名文件
替换文件名中的字符串
划线部分的通配符?代表任意一个字符
添加文件后缀
划线部分的通配符代表任意多个字符*
将文件名的小写转换成大写
一个批量修改指定目录内文件后缀的脚本
usage:脚本名 目录 原有后缀 新后缀
#!/bin/bash
funct_check_params()
{
if [ ${NARG} -lt 3 ]; then
echo "Usage: $0 directory *.old_extension *.new_extension"
exit 1
elif
[[ ${script_name} = "-h" ]] || [[ ${script_name} = "--h" ]]; then
echo "Usage: $0 directory old_extension new_extension"
exit 1
fi
}
funct_batch_rename()
{
old_ext_cut=`echo ${old_ext} | cut -f2 -d .`
new_ext_cut=`echo ${new_ext} | cut -f2 -d .`
for file in $(ls $work_dir/*$old_ext); do mv $file $(echo $file | sed -n "s/\(.*\.\)$old_ext_cut/\1$new_ext_cut/p"); done
}
script_name=$0
work_dir=$1
old_ext=$2
new_ext=$3
NARG=$#
{
funct_check_params
funct_batch_rename
}