Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 通过xargs到“标记”命令行工具的管道路径_Bash_Variables_Pipe_Xargs - Fatal编程技术网

Bash 通过xargs到“标记”命令行工具的管道路径

Bash 通过xargs到“标记”命令行工具的管道路径,bash,variables,pipe,xargs,Bash,Variables,Pipe,Xargs,是一个命令行可执行文件,允许macOS用户向文件添加“标记” 标记-a |--添加。。。将标签添加到文件中 我正试图通过管道将文件列表放入文本文档中,但在失败几天后,我急需语法方面的帮助。描述页面上的唯一线索是: 如果您计划通过xargs管道输出标记,您可能需要 使用每个选项的-0选项 我已经尝试了几十个命令:xargs、gnuxargs、for、while,但无法通过这些命令向列表中的文件添加标记。在研究网络时,我想可能有一个关于行尾的问题 我安装了dos2unix,并在文件上运行它来修复可能

是一个命令行可执行文件,允许macOS用户向文件添加“标记”

标记-a |--添加。。。将标签添加到文件中

我正试图通过管道将文件列表放入文本文档中,但在失败几天后,我急需语法方面的帮助。描述页面上的唯一线索是:

如果您计划通过xargs管道输出标记,您可能需要 使用每个选项的-0选项

我已经尝试了几十个命令:xargs、gnuxargs、for、while,但无法通过这些命令向列表中的文件添加标记。在研究网络时,我想可能有一个关于行尾的问题

我安装了
dos2unix
,并在文件上运行它来修复可能的行尾问题,但这似乎没有解决任何问题

如果将
cd
放入要标记的文件目录,则不必使用文件的完整路径

$ gxargs -0 -t --arg-file="/Users/john/Desktop/diffremove.txt" | tag -0 -a red

echo '13.Hours.The.Secret.Soldiers.of.Benghazi.2016.1080p.BluRay.x265'$'\n''1941.1979.DC.1080p.BluRay.x265'$'\n'...
由于不了解xargs是如何传递这些行的,我想我需要在命令之后放置一个变量,在该命令中查找文件
tag-0-a red

我试过:
$代表$中的i(/Users/john/Desktop/diffremove.txt)do`tag-a红色“$1”`

我安装了gnuxargs并尝试了这个命令

$ </Users/john/Desktop/diffremove.txt gxargs -0 sh -c 'for arg do tag -0 -a red "$arg"'
$试试这个

xargs -d '\n' -a /Users/john/Desktop/diffremove.txt -I % tag -a red %
在这里,我们使用xargs读取文件(使用-a),使用(使用%)替换字符串,并执行命令标记-a红色{filename}。您可能需要在拆分字符串中添加-d'\n'(将delimeter设置为换行符)

然而,读取和处理文件中的行的经典方法是使用shell内置命令读取:

$ while IFS= read -r p; do tag -a red $p; done < /Users/john/Desktop/diffremove.txt
$whileifs=read-rp;do tag-红色$p;完成

,如果文件中没有空格,则可以跳过其中的IFS=part。

这是gnu xargs?问题似乎是文件名正在转换为一个长字符串,而不是换行符。是的,您需要哪一个?我在mac上,但已安装gnu xargs.hm,请尝试向xargs添加-d'\n'选项
$ while IFS= read -r p; do tag -a red $p; done < /Users/john/Desktop/diffremove.txt