2009-07-22 5 views
1

리눅스에서 bash를 사용하면 재귀 적으로 마운트 된 공유를 트래버스하는 명령을 작성하고 각 파일에서 명령을 실행하여 파일 유형 및 크기, 사용 권한 등을 얻은 다음이 파일을 모두 파일로 출력 할 수 있습니까?재귀 적으로 Samba 공유를 트래버스합니까?

답변

1

CIFS 공유 마운트는 Linux 쉘의 일반 디렉토리 트리와 유사합니다.
필요에 따라 검색 할 명령은 일반적인 것입니다. 기본 디렉토리에서
,

find . -type f -exec ls -lsrt {} \; > file.txt 

확인이 당신에게 파일 형식의 세부 사항을 제공하지 않습니다;
각 파일에 -exec file filename으로 수행 할 수 있습니다.

+0

첫 번째 "."는 시작 디렉토리이므로 주어진 명령이 현재 디렉토리에서 시작되지만 "find/path/to/share ... " – caf

+0

@caf, 매우 사실. 그리고 나는 그의 다른 질문에 대답하면서 그것에 대해 이야기했다. – nik

0
mount -v | grep smbfs | awk '{print $3}' | xargs ls -lsR 

파일로 리디렉션 할 수 있습니다. 당신이 간부 파일을 사용하는 경우

+0

어떻게 내가 ou 각 파일에 대한 파일 명령의 tput? –

0
mount -v | awk '/smbfs/{ 
    cmd="ls -lsR "$3 
    while((cmd | getline d)>0){ 
     print d "->file "$3 
    } 
    close(cmd) 
}' 
+0

각 파일에도 file 명령의 출력을 포함시키는 방법은 무엇입니까? –

+0

"파일 명령 출력"이란 무엇입니까? 귀하의 정보를 위해서는 실제로 유닉스에 "파일"실행 가능 명령이 있습니다. 당신이 무엇을 요구하고 있는지 분명히하십시오. 필요한 경우 예제를 보여주십시오. – ghostdog74

+0

죄송합니다. 필자는 파일뿐만 아니라 ls 파일도 출력해야했습니다. 예 : "ls -lsR $ 3; $ 3 file"하지만이 작업을 수행하는 방법이 확실하지 않습니다. –

0
find $(mount -t smbfs | awk '{print $3}') -mount -type f -ls -execdir file {} \; 
... 
33597911 4 -rw-rw-r-- 2 peter peter   5 Dec 6 00:09 ./test.d\ ir/base 
./base: ASCII text 
    3662 4 -rw-rw-r-- 2 peter peter   4 Dec 6 02:26 ./test.txt... 
./test.txt...: ASCII text 
    3661 0 -rw-rw-r-- 2 peter peter   0 Dec 6 02:45 ./foo.txt 
./foo.txt: empty 
... 

{} +, 그것은 여러 인수 한 번 파일을 실행 것이지만, 그 출력은 발견의 -ls 출력 잘 인터리브하지 않을 것입니다. (GNU 발견의 -execdir {} + 현재 bug workaround 때문에, -execdir {} \;과 동일하게 동작합니다. 당신이 file 출력에 전체 경로를 원하는 경우 위의 -ls 출력뿐만 아니라 -exec file {} \;를 사용합니다.

find -ls 출력은 확실히 동일하지 않습니다 ls -l 첫 번째 두 필드로 inode를 포함하기 때문에

관련 문제