我遇到了通配符模式和通配符,我特别感兴趣的是[!]
.
此构造与 构造类似
[!]
,不同之处在于它不匹配括号内的任何字符,而是匹配任何字符,只要它不在[
和之间列出]
。
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)
现在; 对我来说,这表明单数!
就足够了,之后的所有值都包含在该范围内。
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 世界中与参数相关的更广泛的使用.