【问题标题】:Use Xargs to wait for enter key使用 Xargs 等待回车键
【发布时间】:2015-06-19 05:44:34
【问题描述】:

所以,我有一个文件列表,我想用它来生成一组新的文件组。我想一次打开这些组(多个文件)。编辑它们。然后回到终端,回车,打开下一组文件。

我已经让它工作了,但我正在使用一个临时文件来这样做

cat failingAll | awk '{print $2}' | xargs -I {} -L 1 sh -c "find {} | grep xml | xargs echo;" | perl -pe "s/^(.*)$/open \1;read;/g" > command.sh ; sh command.sh

这可能与 xargs 相关吗?真的,我的意思是没有临时文件。我试过这个

cat failingAll | awk '{print $2}' | xargs -I {} -L 1 sh -c "find {} | grep xml | xargs open ; read;"

但它不会在组之间暂停,它只是一次将它们全部打开(并使我的 xml 编辑器崩溃。)

【问题讨论】:

  • cat 的用法是UUOC。你不需要它。只需使用awk '{print $2}' failingAll
  • | xargs echo 据我所知也完全没用。
  • failingAll 目录名中的行吗?这就是find 的用途吗? grep 是否仅匹配名称中带有 xml 的文件?您是否只想一次编辑一个 xml 文件(在failingAll 中列出的目录下)?
  • @Etan Reisner 是的,它是目录名称。是的,它是用于名称中的 xml。不,它是具有可变子目录的多个 xml 文件
  • 您正试图一次编辑每个目录下的所有 xml 文件(在 failingAll 中找到),但每个“组”文件都按顺序编辑?

标签: linux bash shell xargs


【解决方案1】:

尝试这样的操作,然后在完成每组文件的编辑后退出编辑器?

while IFS= read -r dir; do
    files=()
    while IFS= read -r -d '' xmlfile; do
        files+=("$xmlfile")
    done < <(find "$dir" -name "*.xml" -type f -print0)
    open -W "${files[@]}"
done < <(awk '{print $2}' failingAll)

假设您不想退出编辑器并假设它可以通过后续调用 open 获取一组新文件,那么以下方法也可能有效:

while IFS= read -u 3 -r dir; do
    files=()
    while IFS= read -r -d '' xmlfile; do
        files+=("$xmlfile")
    done < <(find "$dir" -name "*.xml" -type f -print0)
    open "${files[@]}"
    read
done 3< <(awk '{print $2}' failingAll)

【讨论】:

  • 这会打开一个带有 xml 文件名称的文本文件。然后,我不知道如何在组中循环
  • 好的,现在它打开了文件。如何打开下一组文件?
  • 就像我在回答中所说的那样:“完成编辑每组文件后退出编辑器”。
  • 啊,我没看到。好的。不完全是我的想法,因为 Oxygen XML Editor 需要一点时间才能打开,但它确实可以解决问题。你知道为什么在打开后放一个read 不会暂停吗?
  • 你打算如何让它工作?您如何期望从编辑器中转储所有打开的文件并提供新文件?你能关闭所有打开的文件,然后再次调用“open”来输入一批新文件吗?
【解决方案2】:

根据 Etan Reisner 的回答,我发现这也有效

cat failingAll | awk '{print $2}' | xargs -I {} -L 1 sh -c "find {} | grep xml | xargs open -W"

但它并没有完全达到我想要的效果,即等待输入。我相信它是因为 xargs 一直在给它输入下一行,这会破坏 read 命令。

【讨论】:

    猜你喜欢
    • 2015-04-07
    • 1970-01-01
    • 2015-11-27
    • 2018-05-31
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    相关资源
    最近更新 更多