首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用bash shell脚本删除文件夹中除第一个和最后一个文件外的文件

使用bash shell脚本删除文件夹中除第一个和最后一个文件外的文件,可以按照以下步骤进行操作:

  1. 打开终端,进入要操作的文件夹所在的路径。
  2. 创建一个新的bash shell脚本文件,例如delete_files.sh
  3. 使用文本编辑器打开delete_files.sh文件,并输入以下内容:
代码语言:txt
复制
#!/bin/bash

# 获取文件夹中的所有文件列表
files=$(ls)

# 将文件列表转换为数组
file_array=($files)

# 获取文件夹中文件的数量
file_count=${#file_array[@]}

# 判断文件数量是否大于2,如果是则执行删除操作
if [ $file_count -gt 2 ]; then
    # 遍历文件数组,从第二个文件开始删除,直到倒数第二个文件
    for ((i=1; i<$file_count-1; i++)); do
        rm ${file_array[$i]}
    done
fi
  1. 保存并关闭delete_files.sh文件。
  2. 在终端中运行以下命令,给delete_files.sh文件添加执行权限:
代码语言:txt
复制
chmod +x delete_files.sh
  1. 在终端中运行以下命令,执行delete_files.sh脚本:
代码语言:txt
复制
./delete_files.sh

脚本将会删除文件夹中除第一个和最后一个文件外的所有文件。

这个脚本的原理是通过获取文件夹中的所有文件列表,并将其转换为数组。然后,判断文件数量是否大于2,如果是,则遍历文件数组并删除除第一个和最后一个文件外的所有文件。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何使用Python选择性地删除文件夹文件

问题1 问题描述:在一个文件夹,有着普通文件以及文件夹,那么我们如何做到删除全部文件夹而不删除文件呢? 如下图所示,我们想要删除test文件夹所有文件夹,而保留其他文件: ?...Version 1 看到这个问题第一刻,我想到文件夹没有后缀名,其他文件有后缀名,而拥有后缀名则意味着文件名称里面会有.存在,我们就可以利用这个差别,来区分两者,进而实现问题描述功能。...我们可以看到,test文件夹文件已经全部删除。 ? Version 2.0 但是,后来仔细一想,上面这种方法却存在一个非常大问题,如果普通文件是没有后缀名,也就是文件名称不存在....接着,我又发现了文件夹普通文件另外一个区别,也就是文件夹是可以使用os.chdir("file_name")这个命令,而普通文件则显然不行,会出现异常。...问题2 问题描述:我们如何做到删除一个文件夹空白文件夹,而不删除其他文件呢? ? 可以看出,问题2是问题1进阶版本,只需要在问题1代码基础上,增加一个判断文件夹是否空白语句即可。

13.2K30

如何创建修改远程仓库 + 如何删除远程仓库 + 如何删除远程仓库某个文件文件夹 + 如何使用git将本地仓库连接到多个远程仓库

2、在本地新建一个文件夹test,然后我们在该文件夹右键 --> Git Bash Here,输入命令:git clone 远程仓库地址 ?...六、删除Github已有的仓库某个文件文件夹(即删除远程仓库某个文件文件夹) 我们知道,在Github上我们只能删除仓库,并不能删除文件或者文件夹,所以只能用命令来解决。...6.1、本地仓库远程仓库同时删除文件文件夹 1、我们先在本地仓库删除文件a.txt ? 2、然后执行以下命令,即可删除远程仓库文件了 ? 删除远程仓库文件夹同理。不在演示。...七、如何使用git将本地仓库连接到多个远程仓库 1、先在GiuHub(国外)、Gitee码云(国内) Coding(国内) 上分别新建一个远程仓库,参考“二、创建远程仓库”。...2、创建一个本地仓库test,在某一个目录下右键 --> Git Bash Here,演示使用本地仓库test(远程仓库名称本地仓库名称可以不一样,一样是为了方便,不一样也没事) ?

7.2K20

shell语法学习

4.多行注释 许多人使用多行注释来记录他们 shell 脚本。在下一个名为 comment.sh 脚本检查这是如何完成。 #!...shell 脚本删除文件。...它应该删除文件。 27.附加到文件 下面的 shell 脚本示例将向您展示如何使用 bash 脚本将数据附加到文件系统上文件。它向早期 editors.txt 文件添加了一行。 #!...30.解析日期时间 下一个 bash 脚本示例将向您展示如何使用脚本处理日期时间。同样,Linuxdate 命令用于获取必要信息,我们程序执行解析。 `#!...36.清理日志文件一个简单示例演示了在现实生活中使用 shell 脚本简便方法。该程序只需删除 / var/log 目录所有日志文件。您可以更改保存此目录变量以清理其他日志。 #!

1.2K40

40 个简单又有效 Linux Shell 脚本示例

4、多行注释 许多人使用多行注释来记录他们 shell 脚本。在下一个名为 comment.sh 脚本检查这是如何完成。 #!...它应该删除文件。 27、附加到文件 下面的 shell 脚本示例将向您展示如何使用 bash 脚本将数据附加到文件系统上文件。它向早期 editors.txt 文件添加了一行。 #!...28、测试文件存在 下一个 shell 脚本示例显示如何检查 bash 程序中文件存在。 #!...30、解析日期时间 下一个 bash 脚本示例将向您展示如何使用脚本处理日期时间。同样,Linuxdate 命令用于获取必要信息,我们程序执行解析。 #!...36、清理日志文件一个简单示例演示了在现实生活中使用 shell 脚本简便方法。该程序只需删除 / var/log 目录所有日志文件。您可以更改保存此目录变量以清理其他日志。 #!

11410

统计文件夹下某类文件大小脚本

由此产生了一个需求,我需要统计 pubic 文件夹下(包括子文件夹)图片占用空间大小。 统计脚本 经过几个小时编写,终于完成了这个统计脚本 count_file.sh 。...支持统计某个文件夹下(包含子文件夹)某一类文件大小,或者某一类文件其他文件大小。 #!.../bin/bash # 统计一个目录下指定类型或限制某种类型以外文件大小,包括子目录 help() { echo "Description: 用于查找某个目录下特定类型文件数量大小,...各位自己有独立博客小伙伴,有没有图床服务提供,欢迎给我些指导。 参考资料 查找多个指定文件或者排除某类文件 Shell 脚本如何输出帮助信息?...给你shell脚本一个--help文档 编写可接受选项参数shell脚本 getopts 使用

1.2K20

Linux系统入门系列之三:初识Bash

命令,示例如下: 一般一个变量只能在一个子程序运行,export命令可以将变量变为环境变量,从而可以在其它子程序运行,示例如下: 使用set命令可以查看当前环境所有变量(包含环境变量自定义变量...⑷变量运算 在赋值时候,可以直接使用“”或“{}”来引用变量和数组,可以使用“ 变量可以直接累加: 可以通过“#”来从左到右删除变量内容,通过“%”来从右到左删除变量内容,标记字符其他字符可以通过...(单个字符)来指代: 可以通过“/”将旧字符串替换为新字符串: 假如标记字符存在于多处,“#”为删除最短字符,“##”为删除最长字符,同样适用于“%”“/”,示例如下: 通过shell脚本,也可以引用其他软件脚本运行结果来进行变量赋值与运算...在Bash,任何命令(包括管道命令)加上反单引号``之后都可以直接作为变量引用,其值为命令运行结果,可以为变量赋值,例如我们列出目录下所有txt文档并将其储存在变量txt里面: 这一点对于以后Shell...查找第2行到第4行第一个is并替换为ia,其命令为:2,4s/is/ia/: 其中s为替换意思,若是第三行全部is替换为ia,则为:2,4s/is/ia/g: 若是最后一行行号可以用“$”来表示

2.8K30

linux叹号(!)10个技巧

Linux 符号或运算符可用作逻辑否定运算符,也可通过调整从历史记录获取命令,或通过修改运行先前运行命令。以下所有命令均已在 bash Shell 明确检查。...然后检查第六个最后一个命令,八个最后一个命令第十个最后一个命令。 $ history $ !-6 $ !-8 $ !...我只需要将这个新命令最后一个参数作为: $ ls -l !$ 这里!$将携带在最后一个命令传递给这个新命令参数。 将上次执行命令参数传递给新命令 如何使用 (!)...**(ls),但使用了不同开关不同文件夹。...**从文件夹删除所有文件类型,除了扩展名为 “pdf”文件类型。 $ $ rm !(*.pdf) 检查一个目录(比如 / home/avi/Tecmint)是否存在?

82320

实用 Linux 命令行使用技巧集锦

3 、日常使用命令 Ctrl-R 在bash, Ctrl-R用于在历史命令搜索 Ctrl-W, Ctrl-U, Alt-BackSpace bash,Ctrl-W删除最后一个词,Ctrl-U删除最后一行..., Alt-BackSpace 删除光标前一个词 ; man readline 包含了大量bash默认热键绑定; cd - 返回前一个工作路径 xargs 非常强大命令。...set 在bash脚本使用 set -x 获得debug输出,使用 set -e 获得错误输出。 ;分号用于开启一个shell并运行至结束后关闭。...${var%suffix}, ${var#prefix} 输出var变量前缀或者后缀部分。如下面的代码输出为foo.txt....使用shell完成此运算比用Python快3倍。 awk '{ x += $3 } END { print x }' shuf 该命令可以从将一个文件行混洗,或者从中随机选出一些行。

1.4K80

试一试这百个超有用Linux命令行使用技巧

3 日常使用命令 Ctrl-R 在bash, Ctrl-R用于在历史命令搜索 Ctrl-W, Ctrl-U, Alt-BackSpace bash,Ctrl-W删除最后一个词,Ctrl-U删除最后一行..., Alt-BackSpace 删除光标前一个词man readline包含了大量bash默认热键绑定. cd - 返回前一个工作路径 xargs 非常强大命令。...set 在bash脚本使用set -x获得debug输出,使用set -e获得错误输出。 ; 分号用于开启一个shell并运行至结束后关闭。...${var%suffix}, ${var#prefix} 输出var变量前缀或者后缀部分。...使用shell完成此运算比用Python快3倍。 awk'{ x +=$3} END { print x }' shuf 该命令可以从将一个文件行混洗,或者从中随机选出一些行。

99170

shell学习教程(超详细完整)

/bin/bash [指定告知系统当前这个脚本使用shell解释器] Shell相关指令 文件命名规范: 文件名.sh .sh是linux下bash shell 默认后缀 Bash 常用快捷键...bash Test.sh 1 2 结果输出: shell脚本本身名字: Test.sh 传给shell第一个参数: 1 传给shell第二个参数: 2 *会把接收所有参数当成一个整体对待,而@...-i: 用sed修改结果直接修改读取数据文件,而不是由屏幕输出 动作: num a \: 追加,在当前行后添加一行或多行。添加多行时,最后一行,每行末尾需要用“\”代表数据未完结。...插入多行时,最后一行,每行末尾需要用“”代表数据未完结。num表示第几行 d ; 删除删除指定行。 p : 打印,输出指定行。 s : 字串替换,用一个字符串替换另外一个字符串。...world' student.txt #在第二行前插入两行数据 如果是想追加或插入多行数据,最后一行,每行末尾都要加入“\”代表数据未完结。

5.5K20

Python模块知识6:OS、SYS模块

1、os模块,系统相关,比如获取路径、目录、文件夹之类 常用方法: os.getcwd() #获取当前工作目录,即当前Python脚本工作目录路径 os.rename('oldname','new...,相当于shellmkdir dirname os.rmdir('dirname')#删除单级空目录,若目录不为空,则无法删除,报错,相当于shellrmdir dirname os.listdir...('dirname')#列出指定目录下所有文件子目录,包括隐藏文件,并以列表方式打印 os.remove()#删除一个文件, os.stat('path/filename')#获取文件/目录信息 os.sep...os.path.split(path)#将path分割成目录和文件名二元组返回 os.path.basename(path)#返回path最后文件名,如何path以/或\结尾,那么就会返回空值,即os.path.split...结合使用,自动添加目录 案例4:os.rename('oldname','new')#重命名文件/目录 如果程序在同一个目录,可以直接写文件名,如果不在同一目录,需要制定详细路径。

837100

开发工具Tools·Docker

一致运行环境:Docker 镜像提供了内核完整运行时环境,确保了应用运行环境一致性。 持续交付部署:Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。.../app // 将 .dockerignore 排除文件所有文件 copy 到 /app 目录 WORKDIR /app // 指定接下来工作目录为 /app...最后参数指定 Dockerfile 文件所在路径,上例 Dockerfile 在当前路径,所以为点号 .。...koa-demo:0.0.1:image 文件名字(如果有标签,还需要提供标签,默认是 latest 标签)。 /bin/bash:附加命令,容器启动以后,内部第一个执行命令。.../app // 将 .dockerignore 排除文件所有文件 copy 到 /app 目录 WORKDIR /app // 指定接下来工作目录为 /app

71020

pythonos包用法

) os.path.exists('d:/assist/getTeacherList.py') #True or False 2 输出文件夹文件夹以及文件 import os filePath...os.remove(path)函数用来删除一个文件。 os.system(command)函数用来运行shell命令。 os.linesep字符串给出当前平台使用行终止符。...(‘dirname’) 生成单级目录;相当于shellmkdir dirname os.rmdir(‘dirname’) 删除单级空目录,若目录不为空则无法删除,报错;相当于shellrmdir dirname...os.listdir(‘dirname’) 列出指定目录下所有文件子目录,包括隐藏文件,并以列表方式打印 os.remove() 删除一个文件 os.rename(“oldname”,”newname...其实就是os.path.split(path)第一个元素 os.path.basename(path) 返回path最后文件名。如何path以/或\结尾,那么就会返回空值。

1.2K20

Shell脚本调用另一个脚本三种方法

first file 4.三者区别 使用source命令点号.是等价了,类似于C/C++#include预处理指令,都是将指定脚本内容拷贝至当前脚本,由一个Shell进程来执行。...使用sh命令来调用另外脚本前面两种方法有着本质区别。使用sh命令则会开启新Shell进程来执行指定脚本,这样的话,父进程变量在子进程中就无法访问。...sh命令开启一个子进程来调用指定shell脚本无法访问父进程变量。...(3)全局变量:在脚本定义,仅在当前Shell脚本中有效,其他Shell脚本进程不能访本,其作用域从定义位置开始,到脚本结束或被显示删除地方为止。...注意,全局变量既可以在Shell函数内定义,也可以在shell函数定义,因为shell函数内定义变量默认为global,且作用域从“函数被调用时执行变量定义地方”开始,到脚本结束或被显示删除地方为止

11.9K50

使用Docker构建安全虚拟空间

选择一个位置存放用户文件夹: 我这里新建一个 ~/rooms/ 来存放用户文件夹。 配置数据库: 1....创建新 FTP 用户 这个用户应该满足这样要求: 可以上传文件到虚拟空间用户文件夹 (废话); 不能访问虚拟空间用户文件夹之外位置 (在配置 FTP 时通过ch_root 实现); 创建时候设置一个随机密码...那么对应 shell 脚本就是: #/home/ubuntu/rooms/ 即你vps上用来存放用户文件夹位置 # $1 参数为要设置用户名,也是虚拟空间容器&数据库用户&数据库&用户文件夹名字...-c "service apach2 start;" 最后一步,修改挂载文件夹所有者: 到这时,理论上我们空间已经可以正常使用了,可是我用 FTP 连接上去发现,并没有权限上传文件。...,那么贴上最后脚本 创建空间脚本: #!

3.2K30

shell编程 --- Shell入门介绍

与图形界面相比,Shell命令行下执行效率更高,不信你打开你window下命令行去删除一个软件试试。...Linux是使用bash这个shell这个默认shell,那它有哪些功能呢?...其实这个命令就在你文件夹.bash_history文件里,不过需要注意是,~/.bash_history记录是前一次登陆以前所执行过命令,而这一次登陆所执行命令都被暂存在内存,当你成功注销系统后...[tab]接在一串命令第一个后面,则为命令补全 (2)....程序脚本(shell script) 通过Shell来写一个脚本,可以更方便我们执行工作,例如我们可以把进行需要连续用到命令写成一个脚本文件。 当然,bash功能还有很多,以上只是列举几个。

74730

Linux Shell编程

对于JavaEE Python程序员来说,工作需要,你老大会要求你编写一些 Shell脚本进行程序或者是服务器维护,比如编写一个定时备份数据库脚本。.../bin/bash开头 脚本需要有可执行权限 # 编写第一个Shell脚本 需求说明:创建一个Shell脚本,输出hello world! vim hello.sh #!...etc/profile文件定义TOMCAT_HOME环境变量 查看环境变量TOMCAT_HOME值 在另外一个shell程序中使用TOMCAT_HOME 注意:在输出TOMCAT_HOME环境变量前...案例演示:在一个shell脚本简单使用一下预定义变量preVar.sh #!.../bin/bash echo "当前执行进程id=$$" #以后台方式运行一个脚本,并获取他进程号 /root/shcode/myshell.sh & echo "最后一个后台方式运行子进程id

36.2K20
领券