使用Shell脚本更改多个文件的扩展名

在unix/Linux环境中,mv是移动文件的命令,也可以使用它来更改文件扩展名。但它只适用于单个文件,也使用其它字符。

在这里,提供了一个简单的脚本,可以使用它来更改目录中多个文件的扩展名。

将所有.doc文件更改为.txt, 文件:multimove.sh

 #!/bin/sh  #Save file as multimove.sh  IFS=$' '  if [ -z "$1" ] || [ -z "$2" ] then   echo "Usage: multimove oldExtension newExtension"   exit -1 fi # Loop through all the files in the current directory # having oldExtension and change it to newExtension for oldFile in $(ls -1 *.${1}) do # get the filename by stripping off the oldExtension   filename=`basename "${oldFile}" .${1}` # determine the new filename by adding the newExtension # to the filename   newFile="${filename}.${2}" # tell the user what is happening   echo "Changing Extension "$oldFile" --> "$newFile" ." mv "$oldFile" "$newFile" done 

用法:multimove.sh doc txt(将所有.doc文件更改为.txt)

以下是上述程序执行的示例输出。

 pankaj:temp pankaj$ ls abc.txt        hi.doc        journaldev.doc    multimove.sh pankaj:temp pankaj$ ./multimove.sh doc txt Changing Extension "hi.doc" --> "hi.txt" . Changing Extension "journaldev.doc" --> "journaldev.txt" . pankaj:temp pankaj$ ls abc.txt        hi.txt        journaldev.txt    multimove.sh pankaj:temp pankaj$ ./multimove.sh txt doc Changing Extension "abc.txt" --> "abc.doc" . Changing Extension "hi.txt" --> "hi.doc" . Changing Extension "journaldev.txt" --> "journaldev.doc" . pankaj:temp pankaj$ ls abc.doc        hi.doc        journaldev.doc    multimove.sh pankaj:temp pankaj$ 

假设:

  • 这些文件只有一个句点(.)
  • 它仅循环遍历当前目录中的所有文件。 但是,可以扩展它以查找子目录中的文件。
  • 文件名中存在空格可能会导致脚本出现问题。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/264074.html

(0)
上一篇 2022年6月6日 23:45
下一篇 2022年6月6日 23:46

相关推荐

发表回复

登录后才能评论