데이터베이스에 있는 테이블의 모든 ddl을 가져온 다음 데이터베이스에 있는 모든 테이블을 단일 파일로 병합하는 스크립트를 작성했습니다.
다음과 같은 데이터베이스 mydatabase
와 테이블이 있다고 가정해 보겠습니다.mytable
데이터베이스의 모든 테이블 ddl을 임시 디렉터리에 덤프했습니다. 임시 디렉터리의 ddl은 아래와 같습니다 /home/rahul/temp/mydatabase.mytable.ddl
. 데이터베이스 아래의 모든 테이블을 덤프한 후에는 모든 테이블 ddl을 아래와 같이 하나의 파일로 병합하려고 합니다.
cat /home/rahul/temp/mydatabase*ddl >> /home/rahul/final/mydatabase.create
다음과 같은 오류가 발생합니다.
cat: /home/rahul/temp/mydatabase*ddl: No such file or directory
어떻게 해결할 수 있나요?
답변1
어쩌면 쉘 와일드카드를 꺼두었나요 set -f
?
$ ls mydatabase*ddl
mydatabase1.ddl mydatabase2.ddl mydatabase3.ddl
$ set -f
$ ls mydatabase*ddl
ls: cannot access 'mydatabase*ddl': No such file or directory
$ set +f
$ ls mydatabase*ddl
mydatabase1.ddl mydatabase2.ddl mydatabase3.ddl
답변2
cat
와일드카드를 처리할 수 없는 경우 *
빠른 방법은 다음과 같습니다.
for file in /home/rahul/temp/mydatabase*ddl; do cat $file >> /home/rahul/final/mydatabase.create; done
입력 및 출력 파일에 셸 변수를 사용하고 더 복잡한 셸 스크립트를 만들 수 있다는 것을 알고 있지만 이 문제를 처리하는 데는 이것만으로도 충분합니다.