Во-первых, никогда не анализируйте вывод ls
. Вывод считается удобочитаемым и не предназначен для анализа. Гораздо лучше просто перебрать глобус, как я покажу ниже.
Фактическая проблема заключалась в том, что вы использовали $ F
, а не % F
. Первая была бы пустой переменной, и поэтому команда date не имела бы вывода. Итак, вот модифицированная команда:
for i in ./*; do
modTime="$(/usr/gnu/bin/date -r "$i" +%F)"
echo "$modTime"
done
Однако одна команда find
должна делать то, что вы хотите:
find ./ -maxdepth 1 -printf "%TY-%Tm-%Td\n"
Вместо того, чтобы возиться с find
+ xargs
+ mv
, просто переключитесь на zsh
и выполните
autoload -U zmv
zmv -n '$(MY_DIR)/source/**/(*).wav3' '$(MY_DIR)/source/${1%%.*}.wav'
Как это работает:
zmv
через autoload
-n
параметр, чтобы предотвратить выполнение, просто посмотрите, что он будет делать, и, если вас устраивает вывод, удалите этот параметр **
соответствует всем вложенным каталогам (*)
соответствует чему угодно и сохраняет результат в $ 1
переменной $ {1 %%. * }
удалите первую точку из всех последующих символов .wav
extension