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
Другие вопросы по тегам