通过 xargs 到 `tag` 命令行工具的管道路径
piping paths via xargs to `tag` command line tool
tag 是一个命令行可执行文件,允许 macOS 用户向文件添加“标签”。
tag -a | --add <tags> <path>... Add tags to file
我正在尝试通过管道传输文本文档中的文件列表,但几天失败后,我急需语法方面的帮助。描述页面上的唯一线索是:
If you plan to pipe the output of tag through xargs, you might want to
use the -0 option of each.
我已经尝试了几十个命令:xargs、gnu-xargs、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 <variable here>
我试过:
$ for i in $(/Users/john/Desktop/diffremove.txt) do `tag -a red ""`
我安装了 gnu xargs
并尝试了这个命令。
$ </Users/john/Desktop/diffremove.txt gxargs -0 sh -c 'for arg do tag -0 -a red "$arg"'
编辑:
尝试此命令没有错误,但文件未被标记。
$ </Users/john/Desktop/diffremove.txt xargs -0 sh -c 'for arg do `tag -0 -a red '$arg'`;done'
试试这个
xargs -d '\n' -a /Users/john/Desktop/diffremove.txt -I % tag -a red %
这里我们使用 xargs 从文件中读取(使用 -a),使用替换字符串(使用 %)并执行命令 tag -a red {filename}。您可能需要添加 -d '\n'(将分隔符设置为换行符)来拆分字符串。
然而,读取和处理文件行的经典方法是使用 shell 内置命令 read:
$ while IFS= read -r p; do tag -a red $p; done < /Users/john/Desktop/diffremove.txt
,其中 IFS= 如果文件中没有空格,可以跳过部分。
tag 是一个命令行可执行文件,允许 macOS 用户向文件添加“标签”。
tag -a | --add <tags> <path>... Add tags to file
我正在尝试通过管道传输文本文档中的文件列表,但几天失败后,我急需语法方面的帮助。描述页面上的唯一线索是:
If you plan to pipe the output of tag through xargs, you might want to use the -0 option of each.
我已经尝试了几十个命令:xargs、gnu-xargs、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 <variable here>
我试过:
$ for i in $(/Users/john/Desktop/diffremove.txt) do `tag -a red ""`
我安装了 gnu xargs
并尝试了这个命令。
$ </Users/john/Desktop/diffremove.txt gxargs -0 sh -c 'for arg do tag -0 -a red "$arg"'
编辑: 尝试此命令没有错误,但文件未被标记。
$ </Users/john/Desktop/diffremove.txt xargs -0 sh -c 'for arg do `tag -0 -a red '$arg'`;done'
试试这个
xargs -d '\n' -a /Users/john/Desktop/diffremove.txt -I % tag -a red %
这里我们使用 xargs 从文件中读取(使用 -a),使用替换字符串(使用 %)并执行命令 tag -a red {filename}。您可能需要添加 -d '\n'(将分隔符设置为换行符)来拆分字符串。
然而,读取和处理文件行的经典方法是使用 shell 内置命令 read:
$ while IFS= read -r p; do tag -a red $p; done < /Users/john/Desktop/diffremove.txt
,其中 IFS= 如果文件中没有空格,可以跳过部分。