【问题标题】:Pipe 'find' command result list to move (mv) command – Terminal (zsh)管道“查找”命令结果列表以移动 (mv) 命令 – 终端 (zsh)
【发布时间】:2021-07-01 11:41:06
【问题描述】:

管道结果列表到命令 - ZSH

所以我想在一个目录的过滤 ls 结果列表上调用 mv 命令:

 print -l $(ls) | awk '$1 !~ /^A.*/ {print $0}'

这里我的目录中的每个文件名都以大写“A”开头...

现在我希望对其中的每一个都调用 mv 命令,以便将它们移动到目录 ./Strings 中。
我的想法是添加 xargs

...| xargs -0 mv ./Strings 

但这反而最终将我的“字符串”目录重命名为用问号 (“?”) 分隔的每个返回文件名的组合 - -0 空字符标志的效果xargs 命令我想...

有趣的是,xargs 命令上的 wiki(此处链接到德国网站:https://wiki.ubuntuusers.de/xargs/)提供了一个示例代码-sn-p,几乎可以解决我的问题(与我的问题非常相似)尝试),但不用说不能解决我的问题。

find . -uid 1001 -print | xargs -i mv {} /tmp/Klaus/test

当我在我的上下文中尝试时,它抱怨“xargs:非法选项--i”:

 find . -regex '^[^A].*' -print | xargs -i mv {} ./Strings

find -exec cmd {} +

我对我的问题进行了一些研究,通常会弹出“为什么我不能将 find 结果传递给 ...”。
这就是为什么我不想使用 find 命令和 -exec 标志提出解决方案的建议,尽管这也没有达到我想要的结果,不幸的是……:

find . -regex '^[^A].*' -exec mv {} ./Strings +

【问题讨论】:

    标签: terminal find pipe zsh mv


    【解决方案1】:

    经过第二天的进一步测试,我发现导致错误的原因更多的是我这边的小不精确......

    正确的 xargs 管道应如下所示:

    | xargs -I '{}' mv {} ./Strings
    

    解决方案 A

    print -l $(ls) | awk '$1 ~ /^[^A].*/ {print}' | xargs -I '{}' mv {} ./Strings
    

    解决方案 B

    find . -type f -regex './[^A].*' | xargs -I '{}' mv {} ./Strings
    

    解决方案 C*

    mv ^[^A].*(.) Strings
    

    [* 见@Marlon Richert 的回答]

    【讨论】:

      【解决方案2】:

      这样做会容易得多:

      1. 到您的.zshrc 文件中,添加
        setopt extendedglob
        
        然后重启你的 shell。
      2. 这使您可以使用^ 运算符:
        mv ^A*(-.) Strings
        

      【讨论】:

      • 非常好,因为它确实利用了 mv 命令及其存在,不知道你可以包含这样的正则表达式......虽然,不幸的是,我还没有成为朋友mv,因为当我同时输入 (1) mv A*(.) ./Strings 和 (2) mv ./A*(.) ./Strings 时,它总是告诉我“找不到匹配项” – – 有什么想法吗? ?
      • 你从print ^A*得到什么输出? setopt 输出什么?
      • 只有print A*(.) 对我有用,所以我想没有正则表达式... Setopt 返回 combiningchars、interactive、login、monitor、shinstdin、zle - 我认为的“基本”? :)
      • 不,它不是正则表达式,而是全局表达式。语法略有不同。见zsh.sourceforge.net/Doc/Release/…
      • 如果print A*(.) 适合您,那么mv A*(.) Strings 也应该可以。
      猜你喜欢
      • 1970-01-01
      • 2012-06-26
      • 1970-01-01
      • 2012-03-19
      • 1970-01-01
      • 2021-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多