首页
学习
活动
专区
工具
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.3K30

如何创建修改远程仓库 + 如何删除远程仓库 + 如何删除远程仓库中的某个文件或文件夹 + 如何使用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.5K21
  • 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 目录中的所有日志文件。您可以更改保存此目录的变量以清理其他日志。 #!

    36810

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

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

    1.3K20

    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.9K30

    linux中叹号(!)的10个技巧

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

    86720

    实用 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.5K80

    试一试这百个超有用的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 该命令可以从将一个文件中的行混洗,或者从中随机选出一些行。

    1K70

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

    1、os模块,和系统相关的,比如获取路径、目录、文件夹之类 常用方法: os.getcwd() #获取当前工作目录,即当前Python脚本工作的目录路径 os.rename('oldname','new...,相当于shell中的mkdir dirname os.rmdir('dirname')#删除单级空目录,若目录不为空,则无法删除,报错,相当于shell中的rmdir 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')#重命名文件/目录 如果和程序在同一个目录,可以直接写文件名,如果不在同一目录,需要制定详细的路径。

    900100

    开发工具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

    75620

    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 #在第二行前插入两行数据 如果是想追加或插入多行数据,除最后一行外,每行的末尾都要加入“\”代表数据未完结。

    6.4K21

    使用Docker构建安全的虚拟空间

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

    3.2K30

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

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

    12.2K50

    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.4K20

    如何入门 Bash 编程

    在终端中执行一个动作时,你也在学习如何编写脚本。 例如,我曾经负责将大量 PDF 书籍转换为低墨和友好打印的版本。...通过使用 GhostScript 处理了几天的任务,我确认这是解决我的问题的方法。 编写基本的脚本来运行命令,只不过是复制我用来从 PDF 中删除图像的命令和选项,并将其粘贴到文本文件中而已。...初始变量是 $0,它代表了启动脚本的命令。下一个变量是 $1 ,它表示传递给 Shell 脚本的第一个 “参数”。.... $ bash hello.sh "hello world" hello world 利用脚本工作 无论你是从 PDF 文件中查找要删除的图像,还是要管理混乱的下载文件夹,抑或要创建和提供 Kubernetes...镜像,学习编写 Bash 脚本都需要先使用 Bash,然后学习如何将这些脚本从仅仅是一个命令列表变成响应输入的东西。

    95030

    生信自动化流程搭建 02 | 脚本

    脚本 脚本是字符串声明,它定义了由过程执行到执行任务的命令。 一个进程仅包含一个脚本块,并且当该进程包含输入和输出声明时,它必须是最后一个语句。 输入的字符串在主机系统中作为Bash脚本执行。...它可以是通常在终端 shell 程序或通用Bash脚本中使用的任何命令,脚本或它们的组合。 可以在脚本语句中使用的命令的唯一限制是目标执行系统中这些程序的可用性。...另外,可以使用Shell块定义,该定义允许脚本包含Bash和Nextflow变量,而不必转义第一个。 使用其他语言的脚本 默认情况下,Nextflow流程脚本为Bash脚本,但您不仅限于此。...Nextflow脚本文件所在的文件夹中(可以使用绝对模板路径提供任何其他位置)。...Shell脚本支持使用文件模板机制。相同的规则适用于脚本模板中定义的变量。 本机执行 Nextflow进程可以执行除系统脚本以外的本机代码,如前几段所示。

    2.5K10
    领券