OS X 10.8 также перечислен как регистрируемый продукт UNIX 03 в http://www.opengroup.org/openbrand/register/.
При использовании удара это не совместимо POSIX по умолчанию. эхо не поддерживает опций по умолчанию в sh все же.
$ bash
$ builtin echo -e a; /bin/echo -e a
a
-e a
$ sh
$ builtin echo -e a; /bin/echo -e a
-e a
-e a
$ shopt -u xpg_echo
$ builtin echo -e a; /bin/echo -e a
a
-e a
sh OS X является версией удара с различиями как:
Как slm уже указали, что можно протестировать на $f
, чтобы быть регулярным файлом. При изучении я изменил бы сценарий, чтобы не быть одним лайнером, они имеют тенденцию быть более твердыми считать и поддержать:
for f in *
do
if [ -f "$f" ]
then
mv -- "$f" "$f-$(stat -c %Y "$f" | date +%Y%m%d)"
fi
done
(можно всегда свернуть это позже путем вставки ;
и удаляющий новые строки)
-f
тестирует аргумент, чтобы быть регулярным файлом (не устройство или каталог), существуют другие тесты также (-d
для каталога, например, таким образом, вы могли протестировать если [!-d "$f"]
также в этом случае).
Это должно работать на то, чего вы требуете;
для файла в $ (находят. - тип f); сделайте mv - "$file" "$file-$ (статистика-c %Y "$file" | дата + %Y%m%d)"; сделанный
объяснение новой части, вы используете команду находки, чтобы только найти файлы (введите-f);
находят. - тип f
.
Вам вообще не нужен цикл, просто используйте Найти
вместе с EXEC
Опция + SH -C
:
find . -maxdepth 1 -type f -exec sh -c 'mv -- "$0" "$0"-$(stat -c %Y "$0" | date +%Y%m%d)' {} \;
Однако трубопровод
на Дата
не имеет большого смысла для меня. Если вы хотите добавить Текущий Дата для всех файлов, то
вообще не требуется:
find . -maxdepth 1 -type f -exec sh -c 'mv -- "$0" "$0"-$(date +%Y%m%d)' {} \;
С другой стороны, если вы хотите добавить время последней модификации каждого файла, затем используйте -R
-R. Опция Дата
:
find . -maxdepth 1 -type f -exec sh -c 'mv -- "$0" "$0"-$(date -r "$0" +%Y%m%d)' {} \;
и если вы хотите, просто для упражнений, используйте вывод из Stat
Вход дата
, затем используйте - Дата
Опция Дата
: Дата
Команда
find . -maxdepth 1 -type f -exec sh -c 'mv -- "$0" "$0"-$(date +%Y%m%d --date=@$(stat -c %Y "$0"))' {} \;