我正在尝试使用Mac OSX的终端对NAS上的文件进行排序。我正计划使用以下步骤:
我已经为步骤1到2创建了2个可执行文件。我仍在考虑为步骤3设置第3个文件,但是遇到了问题。
有关信息:
文件1:“ MakeMediaYearFolders.command”具有以下代码行
#! /bin/bash
xargs -tI % mkdir % < MediaYearFolders.csv
其中:“ MediaYearFolders.csv”具有以下几行
Media - 1999
Media - 2000
...
Media - 2020
文件2:“ MakeMonthsFolder.command”具有以下代码行
#! /bin/bash
cd /Users/Name/Desktop/DROBO TEST/2. SORTED/Media - 1999/
xargs -tI % mkdir % < MonthsFolders.csv
与“ MonthsFolders.csv”具有以下几行
01 - January
...
12 - December
文件3:当前具有以下内容
#! /bin/bash
cp -fv /Users/name/Desktop/DROBO TEST/2. SORTED/MonthsFolders.csv /Users/name/Desktop/DROBO TEST/2. SORTED/Media - 1999
cp -fv /Users/name/Desktop/DROBO TEST/2. SORTED/MakeMonthsFolder.command /Users/name/Desktop/DROBO TEST/2. SORTED/Media - 1999
Cd /Users/name/Desktop/DROBO TEST/2. SORTED/Media - 1999
xargs -tI % mkdir % < MonthsFolders.csv
我面临的问题是多重的,我不确定如何解决这些问题:
find /Users/name/Desktop/DROBO\ TEST/1.\ SOURCE -name "201704*" -exec mv -v -- /Users/name/Desktop/DROBO\ TEST/1.\ SOURCE /Users/name/Desktop/DROBO\ TEST/Media\ -\ 2017/04\ -\ April
。我从系统收到以下消息:find: -exec: no terminating ";" or "+"
。我不太确定如何解释这个,更不用说对它了;-)最重要的事情是:如何获得消息“您在/ var / mail / name中有新邮件”的邮件?基本上,我想我的问题是如何到达那里?
任何帮助,建议吗?
谢谢大家
该shell脚本虽然效率不高,但可以实现步骤1和2:
#!/bin/sh
while read -r year; do
if [ -n "$year" ]; then
mkdir "$year"
else
continue
fi
while read -r month; do
if [ -n "$month" ]; then
mkdir "$year/$month"
else
continue
fi
done < MonthsFolders.csv
done < MediaYearFolders.csv
它只是从中读取每一行MediaYearFolders.csv
,创建一个具有该名称的目录,然后从中读取其中几个月的目录MonthsFolders.csv
。if子句保证在创建目录时,year和month变量都不为空。
find
语法可能有点棘手。正确的书写方式是
find /Users/name/Desktop/DROBO\ TEST/1.\ SOURCE -name "201704*" -exec mv -v -- {} /Users/name/Desktop/DROBO\ TEST/Media\ -\ 2017/04\ -\ April \;
如您所见,每个找到的文件进入,{}
-exec位以终止\;
。请参阅man find
以获取更多信息。
当心:您需要保护在引号中包含空格的字符串或转义空格字符:
cd /Users/.../DROBO TEST
→ cd "/Users/.../DROBO TEST"
cd /Users/.../DROBO TEST
→ cd /Users/.../DROBO\ TEST
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句