删除变量中的文件 - bash

Posted

技术标签:

【中文标题】删除变量中的文件 - bash【英文标题】:Delete files in a variable - bash 【发布时间】:2022-01-19 02:16:44 【问题描述】:

我有一个以元音结尾的文件名变量。我需要一次删除所有这些文件。我试过使用

rm "$vowels"

但这似乎只返回变量中的文件并声明“没有这样的文件或目录”

【问题讨论】:

您没有展示如何为变量vowel 赋值。也许这已经是问题所在了。顺便说一句,你为什么要使用变量? 【参考方案1】:

这是你对引号的使用:它们告诉 rm 你的变量内容将被解释为单个参数(文件名)。如果没有引号,内容将使用有效的 shell 规则分成多个参数。

请注意,如果您的文件名包含空格,这可能会有风险 - 因为无法区分文件名之间的空格和文件名中的空格。

您可以通过使用数组和使用带引号的数组扩展来解决此问题(我不记得它的语法,但可能看起来像 rm "$array[@]" - 其中数组中的每个元素都将作为带引号的字符串输出) .

【讨论】:

【参考方案2】:

解决方案

分配变量

vowel=$(find . -type f | grep "[aeiou]$")

删除变量中的所有文件

echo $vowel | xargs rm -v

【讨论】:

以上是关于删除变量中的文件 - bash的主要内容,如果未能解决你的问题,请参考以下文章

Bash脚本从.txt文件中删除特定行[重复]

bash shell中的环境变量

如何从bash中的字符串中删除后缀?

删除文本文件bash中的文件扩展名[重复]

根据 bash 中的条件删除 YML 文件中的属性

在 bash 中解析 YAML 文件中的嵌套变量