linux - 如何删除与字符串中的项目相似的文件
问题描述
我想使用以下模式删除当前文件夹中的文件。
0_something.sql.tar
我提供了一个包含数字的字符串
number_string="0,1,2,3,4"
如何删除 number_string 中未包含的任何文件,同时保持 x_x.sql.tar 模式?
例如,我有这些文件:
0_something.sql.tar
2_something.sql.tar
4_something.sql.tar
15_something.sql.tar
基于这个逻辑,以及数字字符串中的数字 - 我应该只删除 15 因为:
- 它遵循模式_ .sql.tar
- 数字字符串中没有数字
解决方案
这可能会帮助你:
s="0,1,2,3,4"
s=",${s},"
for f in *.sql.tar; do
n="${f%_*}"
[ "${n//[0-9]}" ] && continue
[ "$s" == "${s/,${n},/}" ] && echo rm -- "$f"
done
echo
如果这个答案让你满意,请删除
这是做什么的:
- 将您的 number_string
s
转换为完全以逗号分隔的字符串,并且以逗号 (s=",0,1,2,3,"
) 开头和结尾。这允许我们搜索条目,例如,5,
- 遍历所有与 glob 匹配的文件
*.sql.tar
n="${f%_*}"
:提取第一个下划线之前的子字符串 `[ "{n//[0-9]}" ] && continue
:验证子字符串是否为整数,如果不是,则跳过文件并移动到下一个。- 替换 number_string 中的数字(用逗号),如果子字符串没有改变,这意味着我们不应该保留文件
推荐阅读
- java - 在 Android 上裁剪和保存部分可缩放/可缩放的 Canvas 视图
- javascript - 如何根据下拉列表中的选择更新网页?
- python - 一起进行 700 个 API 调用并使用 AWS Lambda 合并数据
- r - 匹配第二个数据帧中的两个列标准的 R 数据帧的子集
- matrix - 提取矩阵的下三角形部分
- python - python - 在 python 中 SQL 选择条件语句
- c# - 如何避免将重复项添加到多层列表中
- ios - SWIFT:填充 HTML 输入 [type="text"]
- typescript - 打字稿打字问题
- python - 使用 logger 在日志名称中添加时间