
Моя цель — поместить в каталог файл, созданный в текущем месяце.
Кажется, команда верна, но не выдает никакого результата:
Date=`date '+%b'`
echo $Date
Oct
ls -l | awk -v d="$Date" '/d/ {print $NF}'
решение1
Использовать его следует следующим образом:
ls -l | awk -v d="$Date" '$0 ~ d {print $NF}'
Объяснение естьздесь
Но, возможно, его лучше использовать find
в вашем сценарии.
find . -maxdepth 1 -type f -daystart -ctime -`date "+%d"`
Если у вас классический вариант awk
вместо gawk
:
find * -prune -type f -cmin -`date '+%d %H %M' | awk '{print ($1*24+$2)*60+$3}'`
решение2
Проблема здесь в том, что awk
нет способа определить, что d
внутри шаблона подразумевается представление переменной с этим именем: awk
пытается сопоставить литерал d
. Вместо этого вы можете использовать расширение параметра:
ls -l | awk "/$Date/ {print \$NF}"
При этом следует отметить два момента:
Время, указанное в
ls -l
выводе, является временной меткой: последний раз, когда файл был изменен, а не создан. Время создания файлав лучшем случае ненадежныйи в худшем случае недоступны.Тыне следует анализировать вывод ls
Вместо этого используйте
find
, как вответ чирикова.