shell批量操作文件后缀

 批量修改文件后缀
for file in $(find . -name "*.del" -type f);do mv "$file" "${file%.del}";done
file=/dir1/dir2/dir3/my.file.txt
我们可以用 ${ } 分别替换获得不同的值:
${file#*/}:拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:拿掉最后一条 / 及其左边的字符串:my.file.txt
${file#*.}:拿掉第一个 .  及其左边的字符串:file.txt
${file##*.}:拿掉最后一个 .  及其左边的字符串:txt
${file%/*}:拿掉最后条 / 及其右边的字符串:/dir1/dir2/dir3
${file%%/*}:拿掉第一条 / 及其右边的字符串:(空值)
${file%.*}:拿掉最后一个 .  及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:拿掉第一个 .  及其右边的字符串:/dir1/dir2/dir3/my

//集体增加后缀
find . ! -type d |xargs -i mv {} {}.c;
find . ! -type d -exec mv -f {} {}.suf \;

要想把my.file.txt 变成 my.file.cpp
mv "$file" "${file%.*}.cpp"
改变当前目录及子目录下所有.cc的文件后缀为.cpp
for file in $(find . -name "*.cc" -type f);do mv "$file" "${file%.*}.cpp";done

批量删除文件
find . -name "*.o"  -exec rm {} \;

你可能感兴趣的:(linux)