Linux部分文件操作记录

问题描述

多级文件夹下,有多个同名文件,以及其他无关文件,为了减轻体量,遍历目录,只保留对应文件
首先open terminal here

find . -type f \( ! -name 'algo_raw_imu.bin' -a ! -name 'post_gnss_only_error.log' -a ! -name 'rtkout.log' \) -exec rm {} +

这个命令使用 find 来遍历当前目录及其子目录中的所有文件。
-type f 限制查找到的对象为文件。
! -name 表示排除指定名称的文件。在这种情况下,我们删除了除了 ‘algo_imu.bin’、‘post_gnss_only_error.log’ 和 ‘rtkout.log’ 的所有文件。
-exec rm {} + 部分将找到的文件传递给 rm 命令来进行删除操作。{} 代表找到的文件,+ 表示一次性传递多个文件给 rm 命令,以提高效率。
请确保在执行这些操作之前备份您认为重要的文件,以防意外情况发生。

问题描述

多级文件夹下,只保留post_gnss_only_error.log rtkout.log 两个文件,如果有algo_raw_imu.bin,则将该文件删除,并新建一个空的algo_raw_imu.bin,其余文件删除
建立一个.sh文件

#!/bin/bash

# 设置要操作的目录路径
target_dir="/path/to/your/target/directory"

# 遍历目标目录及其子目录
find "$target_dir" -type d | while read dir; do
    # 进入当前目录
    cd "$dir" || continue
	echo "$dir"
	
    # 保留的文件
    keep_files=("post_gnss_only_error.log" "rtkout.log")

    # 遍历当前目录下的文件
    for file in *; do
        if [[ -f "$file" ]]; then # 判断是文件而不是目录,防止尝试删除目录
            if [[ "${keep_files[*]}" =~ "$file" ]]; then
                continue # 保留文件,跳过操作
            elif [[ "$file" == "algo_raw_imu.bin" ]]; then
                rm "$file" # 删除algo_raw_imu.bin
                touch "$file" # 创建空的algo_raw_imu.bin
            else
                rm "$file" # 删除其他文件
            fi
        fi
    done
done
  • #!/bin/bash 是一个称为Shebang的特殊注释行,它告诉操作系统使用哪个解释器来执行脚本。在这种情况下,/bin/bash 是Bash Shell的路径,这是一种常见的命令行Shell解释器。
  • find [path] [expression]:-type:按照文件类型查找,d为目录
  • while read dir:同时记录目录的路径

问题描述

压缩文件,常规需求

zip -r [压缩后的文件名.zip] [./文件名]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值