OR 옵션을 사용하여 파일을 분류하는 방법

OR 옵션을 사용하여 파일을 분류하는 방법

이런 파일 이름이 있어요

/etc/auto.abc on server 1
/etc/auto.def on server 2
/etc/auto.ghi on server 1

모든 서버에 대한 스크립트를 작성 중이며 파일을 캡처하고 싶습니다.

예: cat /etc/auto.abc또는 /etc/auto.def또는 /etc/auto.ghi. 존재하는 파일을 가져올 수 있어야 합니다.

감사해요,

답변1

이 같은:

if [[ $(find . -name "auto*" -type f -maxdepth 1 -printf '\n' | wc -l) -eq 1 ]]
then
   cat auto*
else
   echo there are more files that match 'auto*'
fi

-printf '\n'개행 문자가 포함된 파일 이름을 올바르게 처리하는 것이 가능합니까(참조이 답변). else2개 이상의 파일이 패턴과 일치하는 경우 이 경우를 처리해야 합니다. auto*여기에서 수행하기로 결정합니다.

답변2

파일에 대한 작업을 실행하기 전에 스크립트를 사용하여 파일이 존재하는지 확인하는 것은 어떨까요?

#!/bin/bash
if test -f "/etc/auto.def"; then cat /etc/auto.def;
elif test -f "/etc/auto.ghi"; then cat /etc/auto.ghi;
elif test -f "/etc/auto.abc"; then cat /etc/auto.abc;fi

원천:

http://www.shellhacks.com/en/HowTo-Check-If-a-File-Exists

http://www.thegeekstuff.com/2010/06/bash-if-statement-examples/

답변3

사용을 고려해 보셨나요?파일 전역?

가장 느슨한 방법은 다음과 같습니다.

cat /etc/auto*

그러나 귀하의 경우 더 나은 것은 다음과 같습니다.

cat /etc/auto.???

틀림없이만약에이 glob과 일치하는 다른 원치 않는 파일이 있을 수 있습니다.만약에세 개의 파일 중 하나 이상이 있을 수 있으며(한 개만 필요함) 이러한 모든 가능성을 고려하지는 않습니다. 하지만 그건 확실히가장 단순한방법.

관련 정보