bash中的多个和递归文件重命名

时间:2017-02-09 17:50:07

标签: bash rename

prop_file = next((file for file in os.listdir(data_folder) if 'property' in file), None) if not prop_file: message = 'The property file could not be found in the specified folder ({})!' raise AppropriateException(message.format(data_folder)) 我有一个具有以下结构的文件夹:

Linux

依此类推,直到. ├── a │   ├── 00000400000000030bfd.dat │   ├── 10000400000000030bfd.dat │   ├── 20000400000000030bfd.dat │   ├── etc.... ├── b │   ├── 00000401000000030bfd.dat │   ├── 10000401000000030bfd.dat │   ├── 20000401000000030bfd.dat │   ├── etc.... ├── c │   ├── 00000402000000030bfd.dat │   ├── 10000402000000030bfd.dat │   ├── 20000402000000030bfd.dat │   ├── etc.... ├── d │   ├── etc.... ├── e │   ├── etc.... ├── f 文件夹。我想使用"p"脚本将每个目录中的每个.dat文件重命名为.html文件。我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

使用循环。

for file in {a..p}/*.dat ; do
    mv "$file" "${file%.dat}.html"
done

${file%.dat}.dat的值末尾删除$file

答案 1 :(得分:0)

这是一个使用所有传统命令的版本:

find log -name "*.dat" | 
  sed 's/.log$//;s/mv &.dat &.html/' |
  bash

基本上,find创建目标名称列表,sed使名称通用,然后生成执行重命名的mv命令,然后将结果传递给{{1执行。

可以省略bash命令,仅获取眼球测试的mv命令列表。您还可以向bash命令添加-x以获取已执行的每个bash命令的日志。