Bash поиск и копирование с использованием переменных
У меня есть набор каталогов, которые я хочу искать, т.е.
/home/*/Documents/Crashes
Файлы, которые я пытаюсь получить, имеют вид:
A.log.20121022T160949Z
где первые несколько чисел являются датой (здесь 2012/10/22).
У меня есть текстовый файл, из которого я извлекаю имя пользователя, читается как $line.
Я только хочу вытащить файлы с текущей даты. Я пробовал:
D= date +%Y%m%d%t
cp -ru /home/$line/Documents/Crashes/A.log.$D* /home/$USER/Documents/Todayslogs
и это тянет все. Также попытался найти без удачи...
Что я делаю неправильно?
2 ответа
Измените это на:
D=$(date +%Y%m%d%t)
$(...)
синтаксис "подстановка команд". В этом примере требуется все, что было бы напечатано в stdout с date +%Y%m%d%t
и сохраняет его в D
, (примечание: подстановка команд не включает вывод stderr, если вы явно не добавили 2>&1
!)
дела D= date +%Y%m%d%t
просто напечатает информацию о дате на стандартный вывод, не сохраняя ее в D
как ты и хотел.
Вы никогда не устанавливаете D
переменная, вы только выполнили команду даты;
$ D= date +%Y%m%d%t
20121026
$ echo $D
<... nadda ...>
Вместо этого сделайте:
$ D=$(date +%Y%m%d%t)
$ echo $D
20121026