小编Jac*_*ite的帖子

`[!]`(括号中的感叹号)bash 中的通配符

我遇到了通配符模式和通配符,我特别感兴趣的是[!].

此构造与 构造类似[!],不同之处在于它不匹配括号内的任何字符,而是匹配任何字符,只要它不在[和之间列出]

rm myfile [!192]
Run Code Online (Sandbox Code Playgroud)

我相信以上内容将删除任何/所有文件,但名称中包含 192 的任何/所有文件除外。

然而,我担心在文件扩展名中正确使用它,尤其是在多个条件下。

在这种情况下,正确的语法是什么?

rm myfile [!.gif .csv. mp3] 
Run Code Online (Sandbox Code Playgroud)

或者

rm myfile [!.gif !.csv !.mp3]
Run Code Online (Sandbox Code Playgroud)

我担心句号可能放错了位置,因此当我试图对特定文件进行操作时,任何带有 a .(肯定是其中任何一个?)的文件都会被操作。

此构造与 构造类似[ ],不同之处在于它不匹配括号内的任何字符,而是匹配任何字符,只要它不在[和之间列出]

(引自http://www.tldp.org/LDP/GNU-Linux-Tools-Summary/html/x11655.htm

现在; 对我来说,这表明单数!就足够了,之后的所有值都包含在该范围内。

command-line bash

10
推荐指数
3
解决办法
4185
查看次数

查找:路径必须在表达式之前:)xargs

mkdir dregsfolder
find /home/tony/Desktop/unsorted_files/ -maxdepth 1 -not \( -type d -or -iname "*.jpg" -or -iname "*.gif" -or -iname "*.docx" \)xargs -0 --no-run-if-empty mv /home/tony/Desktop/dregsfolder
Run Code Online (Sandbox Code Playgroud)

当我运行该代码时;我被告知

find: paths must precede expression: )xargs
Run Code Online (Sandbox Code Playgroud)

我很困惑,因为我认为路径已经用/home/tony/Desktop/unsorted_files.

我更加困惑,因为在Unix & Linux Stack Exchange 上的这个问题中,我们有一个xargs将文件复制到名为 的目录的示例play

find /tmp/ -ctime -1 -name "x*" | xargs -I '{}' mv '{}' ~/play/
Run Code Online (Sandbox Code Playgroud)

而这里,似乎是目标目录,即播放;已在xargs...之后指定

我想澄清与之相关的精确机制xargs和其中的细微差别,不仅要解析目录中的文件(如上一个问题中所述),而且还要解析它在 unix 世界中与参数相关的更广泛的使用.

command-line bash directory find xargs

0
推荐指数
1
解决办法
2564
查看次数

标签 统计

bash ×2

command-line ×2

directory ×1

find ×1

xargs ×1