2014-09-09 1 views
0

Я пытаюсь написать сценарий bash, который печатает все файлы в пути $ 1, которые были изменены позже, чем $ 2. Вот мой сценарий:Печатать сообщение об ошибке, если результатов не найдено, используя find

find ./$1 -mtime -$2 -type f | xargs du -h | sort 

Теперь, если сценарий не возвращает никаких результатов, я хочу, чтобы напечатать сообщение об ошибке, например, как «Нет таких файлов, найденных». Как я могу напечатать сообщение, если и только если не найдено ни одного файла &?

Заранее спасибо.

+1

Вы можете сохранить результат и проверить, если переменная имеет содержание или нет; если нет, напечатайте эту ошибку; если это так, напечатайте вывод: '[-z" $ result "] && echo" ничего не найдено "|| echo "$ result" ' – fedorqui

ответ

2

Вы можете использовать:

#!/bin/bash 

# create a temp file 
tmp=$(mktemp) 

# run find and redirect output to temp file 
find ./"$1" -mtime -"$2" -type f > "$tmp" 

# check if temp file is not empty 
if [[ -s "$tmp" ]]; then 
    cat "$tmp" 
else 
    echo "No such files found" 
fi 

# delete temp file 
rm "$tmp" 
+0

Это предотвратит печать команды? – 2014-09-09 13:22:42

+0

Мы можем хранить весь вывод в локальной переменной и проверять, что для печати фактического результата или печати 'Нет таких файлов найдено'. – anubhava

+1

Не лучше ли хранить его в файле? – 2014-09-09 13:31:18