使用`tag`将文件移动到基​​于bash输出的目录

时间:2015-01-18 16:32:13

标签: bash tags

我目前正在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循环,但是当我尝试打开标签时,这会将所有文件及其标签返回到一行。

无论哪种方式,我都不知道如何按标签移动。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

知道了:

诀窍是使用xargs。感谢this page。我之前应该注意到我在OS X上。

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

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