【Shell】批量操作文件:查找文件路径、批量删除文件、批量重命名文件、批量将文件移至上级目录

导读:本篇文章讲解 【Shell】批量操作文件:查找文件路径、批量删除文件、批量重命名文件、批量将文件移至上级目录,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1.文件夹结构

准备如下文件夹结构作为演示:
E:\Code\Shell有如下文件夹结构,有3个相同文件test.txt

在这里插入图片描述

2.查找某文件夹下指定文件所在的路径

find可以查找某个目录下的指定文件(或目录)所在的路径

# 查找Shell文件夹下test.txt所在路径
$ find Shell -name test.txt
Shell/a/test/test.txt
Shell/b/test/test.txt
Shell/c/test/test.txt

如果不指定目录名,则是查找当前文件夹下的文件

# 查找当前文件夹下的test.txt所在路径
$ find -name test.txt
./Shell/a/test/test.txt
./Shell/b/test/test.txt
./Shell/c/test/test.txt

3.批量删除某个文件夹下的指定文件

删除某个目录下的指定文件(或目录),只需要在find命令后加|xargs rm -rf即可。

# 删除Shell文件夹下所有test.txt
find Shell -name test.txt |xargs rm -rf

删除test.txt后的文件夹结构如下:

在这里插入图片描述

4.批量重命名某文件夹下指定的文件名

编写脚本batch_rename_file.sh,内容如下:

# 批量重命名指定文件夹下的文件名或目录名
oldFileName="test.txt" # 原文件名
newFileName="case.txt" # 新文件名
targetFolder="Shell" # 指定文件夹名

for filePath in  `find $targetFolder -name $oldFileName`
do
    dirPath=`dirname $filePath` # 文件所在目录
    mv $filePath $dirPath/$newFileName
    echo "$filePath -> $dirPath/$newFileName"
done

执行脚本,结果如下:

$ sh batch_rename_file.sh
Shell/a/test/test.txt -> Shell/a/test/case.txt
Shell/b/test/test.txt -> Shell/b/test/case.txt
Shell/c/test/test.txt -> Shell/c/test/case.txt

重命名test.txt后的文件夹结构如下:

在这里插入图片描述

5.批量将某文件夹下指定文件移至上级目录

编写脚本mv_file_to_upperLevel.sh,内容如下:

# 批量将指定文件夹下的文件或目录,移至上级目录
fileName="test.txt" # 文件名
targetFolder="Shell" # 指定文件夹名

for filePath in  `find $targetFolder -name $fileName`
do
    upperLevelDir=`dirname $(dirname $filePath)` # 上级目录
    mv $filePath $upperLevelDir
    echo "$filePath -> $upperLevelDir/$fileName"
done

执行脚本,结果如下:

$ sh mv_file_to_upperLevel.sh
Shell/a/test/test.txt -> Shell/a/test.txt
Shell/b/test/test.txt -> Shell/b/test.txt
Shell/c/test/test.txt -> Shell/c/test.txt

移动test.txt至上级目录后的文件夹结构如下:

在这里插入图片描述

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

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

(0)
小半的头像小半

相关推荐

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