2017-12-29 8 views
-1

파일 크기는 MB이지만 파일을 열려고하면 파일을 찾을 수 없습니다 ...라는 메시지가 나타납니다.파일 크기를 볼 수는 있지만 파일을 열 수 없습니다.

while read line; do echo $line # or whaterver you want to do with the $line variable 
    cat $line | grep "PROCEDURE" > result3.txt 
    chmod 777 result3.txt 
done < xreflist.txt; 
+1

"grep"절차 "xreflist.txt> result3.txt"는 결과를 얻는 데 충분하므로 루프가 필요하지 않습니다. 루프 외부의'chmod '는 한 번만하는 것이 더 좋을 것입니다. – ULick

+0

xreflist.txt 파일에는 해당 파일에서 UPDATE가있는 행을 읽고 출력해야하는 파일의 이름이 들어 있습니다. – Arvind

+0

죄송합니다. 코드에 대해 충분히 생각하지 않았습니다. 어떤 파일을 찾을 수 없는지 불분명하기 때문에 루프에서'ls -l xreflist', 루프에서'ls -l $ line' 그리고 루프 이후에'ls -l resutl3.txt'를 할 수 있습니다. 또는 적절한 오류 처리'if [! -r $ line]; echo "$ line not readable"; 잇다; fi' – ULick

답변

1

파일 크기를 찾으려면 디렉토리를 읽을 수있는 권한이 필요합니다.

파일을 열려면 파일을 읽을 수있는 권한이 필요합니다.

다른 것을 사용하지 않고도 완벽하게 수행 할 수 있습니다.

$ mkdir junk 
$ cd junk 
$ echo "Hello World" > no-permission 
$ chmod 0 no-permission 
$ ls -la 
total 8 
drwxr-xr-x 3 jonathanleffler staff 96 Dec 29 11:34 . 
drwxr-xr-x 18 jonathanleffler staff 576 Dec 29 11:34 .. 
---------- 1 jonathanleffler staff 12 Dec 29 11:34 no-permission 
$ cat ./no-permission 
cat: ./no-permission: Permission denied 
$ rm -f ./no-permission 
$ cd .. 
$ rmdir junk 
$ 
+0

777 권한은 디렉터리 및 파일 수준 모두에서 사용할 수 있지만 여전히 동일한 문제가 발생합니다. -rwxrwxrwx 1 dslayad ds2 1402 12 월 29 일 11:27 result3.txt – Arvind

+1

더 명확하게 진행되는 상황을 표시하려면 질문을 편집해야합니다. MCVE ([MCVE])를 만드는 방법에 대해 읽어보십시오. 최소한 (2 줄 또는 3 줄)'xreflist.txt' 파일을 보여주고 파일과 디렉토리에 대한 사용 권한을 보여줘야합니다. 기본적으로 제가했던 것처럼 말입니다. 'chmod 777'은 나쁜 소식이다. 파일에 실행 코드가 포함되어 있지 않을 수 있습니다. 그것을 실행 가능하게 만들지 마라. 컴퓨터의 모든 사용자가 파일에 쓸 수 있도록 허용하므로 콘텐츠는 신경 쓰지 않아도됩니다. 777 권한을 사용하지 마십시오. 그것은 바보입니다. 644를 사용하면 콘텐츠를 표시하지 않으려는 경우가 아니라면 아마 합리적인 것이됩니다. –

관련 문제