I a*_*Fat 5 command-line files rm
我目前正在尝试删除一些文件。我要删除的文件包含数字 3 或 2,两者或其中之一。
如何删除包含这些数字的文件?
这些文件的命名如下:
K-0_0_1_1_1_1_1_0.wav
K-0_0_1_1_1_1_1_1.wav
K-0_1_0_0_0_0_0_0.wav
K-0_1_0_0_0_0_0_1.wav
K-0_1_0_0_0_0_1_0.wav
K-0_0_0_0_0_0_0_2.wav
K-0_0_0_0_0_0_0_3.wav
K-0_0_0_0_0_0_1_2.wav
Run Code Online (Sandbox Code Playgroud)
在此列表中,应删除最后三个文件。
Zan*_*nna 20
对于当前目录,您可以使用:
rm -- *[23]*
Run Code Online (Sandbox Code Playgroud)
如果你想限制它,只匹配 2 或 3 必须出现在K
和之间的文件.wav
:
rm K*[23]*.wav
Run Code Online (Sandbox Code Playgroud)
如果您想通过强制rm
要求对每个文件进行确认来使其更安全,请使用-i
交互式标志:
rm -i K*[23]*.wav
Run Code Online (Sandbox Code Playgroud)
###笔记
*
匹配任意数量(包括零)的任意字符[some chars]
是一个字符类 - 里面的任何东西都可以匹配--
被识别rm
为选项的结束。如果任何文件名以-
;开头,这将避免错误。否则文件名可能被解释为一个选项如果您需要避免匹配22
, 23
, 32
, 33
,您将需要更复杂的东西,例如??s???'s answer。
您可以使用 shell glob:
rm *2* *3*
Run Code Online (Sandbox Code Playgroud)
这将删除当前工作目录中由*2*
或*3*
globs匹配的所有文件(不是目录)。
在这些 glob 中,“*
始终表示“任何字符的任何数字(包括零)”。
但是请注意.
,默认情况下IIRC Bash 的 glob 不匹配隐藏文件(文件名以 a 开头)。
对于当前目录或任何其他位置:
运行此命令以查看要删除的内容:
find . -type f -iname "*[32]*.wav"
Run Code Online (Sandbox Code Playgroud)然后删除:
find . -type f -iname "*[32]*.wav" -delete
Run Code Online (Sandbox Code Playgroud)更多信息:
.
表示当前目录,也可以是文件位置的路径,例如 /path/to/files
find
移动到预期目标中的任何目录,请使用 option -maxdepth 1
,因此:
find . -maxdepth 1 -type f -iname "*[32]*.wav" -delete
find . -maxdepth 1 -type f -iname "*[32]*.wav" -delete
警告
永远不要这样做,find . -delete -type f -iname "*[32]*.wav"
否则所有(您的文件)都将被删除!
归档时间: |
|
查看次数: |
5141 次 |
最近记录: |