2012-02-08 2 views
1

Я пытаюсь автоматизировать процесс архивирования, и я не уверен, как идти о конкретном аспекте.bash script, чтобы проверить, существует ли файл определенного размера.

В настоящее время я вручную проверяю, существуют ли файлы по определенному размеру с . -size + 4194304k -print, и если он вернется без каких-либо файлов, я буду использовать cpio, если я буду использовать tar. Как я могу проверить это условие?

Благодаря

Bryan

+0

Пожалуйста, отметьте ответ, как принято, если он решает вашу проблему – Cez

ответ

2
#!/bin/bash 

# For a list of files 
#large_files=`find . -size +4194304k -print` 

# For a test of files 
large_files=`find . -size +4194304k -print | cut -c1` 

if [[ -z $large_files ]] 
then 
    # No large files 
else 
    # Large files present 
fi 

Просто для уточнения о кодах возврата и кодов выхода:

# Exit codes 

$ find . -name foo && s=$? 
$ echo $s 
0 

$ find . -name f1 && s=$? 
./f1 
$ echo $s 
0 

# Return codes 

$ s=$(find . -name foo) 
$ [[ ! $s ]] && echo "N" 
N 

$ s=$(find . -name f1) 
$ [[ $s ]] && echo "Y" 
Y 
+0

Можно даже добавить '| head' в команду 'find', чтобы помешать' $ large_files' занимать слишком много места. – glglgl

+0

@glglgl Спасибо за предложение. Я добавил cut -c1 к команде – Cez

+0

Это подделка. 'find' вернет true только в случае обнаружения некоторых файлов. Поэтому 'if find ...>/dev/null; затем смола ...; else cpio ...; fi' – tripleee

Смежные вопросы