【问题标题】:Moving files to a directory based on bash output with `tag`使用 `tag` 将文件移动到基​​于 bash 输出的目录
【发布时间】:2015-01-18 16:32:13
【问题描述】:

我目前在 OS X 上使用tag 来检索我保存在转储文件夹中的文件的 bash 中的标记值。

检索这些标签的目的是将文件移动到单独的文件夹中。

但是,我不确定如何解析标记的输出以便将文件移动到不同的目录。

这是我到目前为止所得到的。

#Allow correct parsing of spaces in a file name
SAVEIFS=$IFS;
IFS=$(echo -en "\n\b");

dumpFolder="/Users/me/Documents/Dropbox/Dump/";

tag -l ${dumpFolder}*;


##Unset SAVEIFS
IFS=$SAVEIFS;

tag -l ${dumpFolder}*; 会给我如下输出:

/Users/me/Documents/Dropbox/Dump/EUROSTAR-1.pdf Personal,Travel
/Users/me/Documents/Dropbox/Dump/EUROSTAR-2.pdf Travel,Work
/Users/me/Documents/Dropbox/Dump/Eurostar Tickets - September 2014.pdf  Personal,Travel
/Users/me/Documents/Dropbox/Dump/Eurostar-2015.01.14.pdf    Travel,Work

返回的标签是TravelWorkPersonal。文件将始终使用WorkPersonal 进行标记,但不能同时使用两者。任何文件都可以有Travel

为了获取标签,我尝试使用 for 循环,但是当我尝试打印标签时,这会在一行中返回所有文件及其标签。

无论如何,我不知道如何按标签移动。

有什么想法吗?

【问题讨论】:

    标签: bash tags


    【解决方案1】:

    知道了:

    诀窍是使用 xargs。感谢this page。我应该早先指出我在 OS X 上。

    tag -l ${dumpFolder}*;可以改成

    tag MyTag ${dumpFolder}* | xargs -I {} mv {} /path/to/dir/;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-28
      • 2017-02-25
      • 2013-03-01
      • 1970-01-01
      相关资源
      最近更新 更多