gpt4 book ai didi

linux - 在 linux 终端中查找并删除文件名中包含相同字符串的文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:31:19 25 4
gpt4 key购买 nike

我想使用 linux 终端从文件名中包含非唯一数字字符串的文件夹中删除所有文件。例如:

werrt-110009.jpg => delete
asfff-110009.JPG => delete
asffa-123489.jpg => maintain
asffa-111122.JPG => maintain

有什么建议吗?

最佳答案

我想我现在才明白你的问题。您想要删除所有包含非唯一数值的文件(在特定文件夹中)。如果一个文件名包含在另一个文件名中也可以找到的值,您想删除这两个文件,对吗?

我会这样做(这可能不是最快的方法):

# put all files in your folder in a list
# for array=(*) to work make sure you have enabled nullglob: shopt -s nullglob
array=(*)
delete=()

for elem in "${array[@]}"; do
# for each elem in your list extract the number
num_regex='([0-9]+)\.'
[[ "$elem" =~ $num_regex ]]
num="${BASH_REMATCH[1]}"
# use the extracted number to check if it is unique
dup_regex="[^0-9]($num)\..+?(\1)"
# if it is not unique, put the file in the files-to-delete list
if [[ "${array[@]}" =~ $dup_regex ]]; then
delete+=("$elem")
fi
done

# delete all found duplicates
for elem in "${delete[@]}"; do
rm "$elem"
done

在您的示例中,array 将是:

array=(werrt-110009.jpg asfff-110009.JPG asffa-123489.jpg asffa-111122.JPG)

delete 的结果是:

delete=(werrt-110009.jpg asfff-110009.JPG)

这是你的意思吗?

关于linux - 在 linux 终端中查找并删除文件名中包含相同字符串的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26891256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com