【Shell】批量创建目录、批量修改目录名

导读:本篇文章讲解 【Shell】批量创建目录、批量修改目录名,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1. 批量创建目录

1.1 当前目录下创建目录

1.在当前目录下创建文件dirName.txt,该文件用于存放目录名,每行写一个目录名。

注:每行内容末尾不能有空格,用vscode打开,选择行尾序列为LF

在这里插入图片描述
2.在当前目录下创建文件batch_mkdir.sh,内容如下:

# 批量创建目录
for dirName in `cat  dirName.txt`
do
    echo $dirName
    mkdir $dirName
done

再执行脚本sh batch_mkdir.sh ,即成功创建了目录test1test2test3

# 执行脚本
$ sh batch_mkdir.sh
test1
test2
test3

# 查看目录结构
$ tree
.
|-- batch_mkdir.sh
|-- dirName.txt
|-- test1
|-- test2
`-- test3

3 directories, 2 files

1.2 创建多级目录

1.mkdir -p可以创建多级目录,如mkdir -p a/b/c在当前目录下创建了多级目录a -b -c

# 创建多级目录
$ mkdir -p a/b/c

# 查看目录结构
$ tree a
a
`-- b
    `-- c

2 directories, 0 files

2.想要批量递归创建目录,只需要改动mkdirmkdir -pdirName.txt中每行内容格式改为a/b/c格式即可。

# 批量创建多级目录
for dirName in `cat  dirName.txt`
do
    echo $dirName
    mkdir -p $dirName
done

例:dirName.txt内容如下:

# 查看dirName.txt内容
$ cat dirName.txt
test1/a
test2/a
test3/a

执行脚本结果如下:

# 执行脚本
$ sh batch_mkdir.sh
test1/a
test2/a
test3/a

# 查看目录结构
$ tree
.
|-- batch_mkdir.sh
|-- dirName.txt
|-- test1
|   `-- a
|-- test2
|   `-- a
`-- test3
    `-- a

6 directories, 2 files

2. 批量修改目录名

2.1 修改当前目录下的目录名

1.在当前目录下创建文件oldName.txtnewName.txt,分别用于存放原目录名和新目录名:

注:每行内容末尾不能有空格,用vscode打开,选择行尾序列为LF

原目录名如下:

# 查看oldName.txt内容
$ cat oldName.txt
test1
test2
test3

新目录名如下:

# 查看newName.txt内容
$ cat newName.txt
test_1
test_2
test_3

2.在当前目录下创建文件batch_rename_dir.sh,内容如下:

# 批量修改目录名
lines=`sed -n '$=' oldName.txt` # oldName.txt的行数

for line in `seq 1 $lines`  
do  
    oldName=`sed -n "${line}p" oldName.txt`
    newName=`sed -n "${line}p" newName.txt`
    mv $oldName $newName
    echo "$oldName -> $newName"
done  

执行脚本结果如下:

# 执行脚本前的目录结构
$ tree
.
|-- batch_rename_dir.sh
|-- newName.txt
|-- oldName.txt
|-- test1
|-- test2
`-- test3

3 directories, 3 files

# 执行脚本
$ sh batch_rename_dir.sh
test1 -> test_1
test2 -> test_2
test3 -> test_3

# 执行脚本后的目录结构
$ tree
.
|-- batch_rename_dir.sh
|-- newName.txt
|-- oldName.txt
|-- test_1
|-- test_2
`-- test_3

3 directories, 3 files

2.2 修改多级目录

oldName.txtnewName.txt内容格式改为多级目录格式即可,多级目录格式,如a/b/c

原目录名如下:

$ cat oldName.txt
test1/a
test2/a
test3/a

新目录名如下:

$ cat newName.txt
test1/b
test2/b
test3/b

执行脚本结果如下:

# 执行脚本前的目录结构
$ tree
.
|-- batch_rename_dir.sh
|-- newName.txt
|-- oldName.txt
|-- test1
|   `-- a
|-- test2
|   `-- a
`-- test3
    `-- a

6 directories, 3 files
 
 # 执行脚本
$ sh batch_rename_dir.sh
test1/a -> test1/b
test2/a -> test2/b
test3/a -> test3/b

# 执行脚本后的目录结构
$ tree
.
|-- batch_rename_dir.sh
|-- newName.txt
|-- oldName.txt
|-- test1
|   `-- b
|-- test2
|   `-- b
`-- test3
    `-- b

6 directories, 3 files

其他批量文件操作,可查看我的另一篇文章:
【Shell】批量操作文件:查找文件路径、批量删除文件、批量重命名文件、批量将文件移至上级目录

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/84879.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!