![한 디렉터리에서 여러 파일을 찾을 수 없습니다. [닫기]](https://linux55.com/image/127641/%ED%95%9C%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%97%90%EC%84%9C%20%EC%97%AC%EB%9F%AC%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%B0%BE%EC%9D%84%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
데이터베이스에 있는 테이블의 모든 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
입력 및 출력 파일에 셸 변수를 사용하고 더 복잡한 셸 스크립트를 만들 수 있다는 것을 알고 있지만 이 문제를 처리하는 데는 이것만으로도 충분합니다.