2010-06-26 2 views
1

여러 개의 파일을 여러 개의 다른 폴더에 덤프했습니다. 불행히도 여러 번 조직화 해 보았습니다. 모든 조직에 일관되게 적용되는 조직 구조는 없습니다.파일을 이동할 때 Unix invoke 스크립트

마지막으로 파일에 태그를 추가 할 수있는 응용 프로그램을 작성하기로 결정한 후 조직은 실제 조직 구조에 맞게 사용자 지정할 수 있습니다.

고아가 된 데이터를 가져 오지 못하게하고 싶습니다. 파일을 이동하거나 이름을 변경하면 데이터베이스의 이름을 업데이트 할 수 있도록 태그 응용 프로그램에 대해 알려야합니다. 필자는 더 이상 존재하지 않는 파일에 태그를 지정하고 기존에 사용되던 파일에 대한 태그를 읽지 않으려 고합니다.

mv 명령에 연결되는 콜백을 작성하여 내 파일의 이름을 바꾸거나 파일을 이동할 경우 스크립트를 호출하여 데이터베이스를 업데이트 할 수있는 응용 프로그램에 알립니다.

내 응용 프로그램은 Ruby로 작성되었지만 필요한 경우 C로 재생할 수 있습니다.

답변

2

Linux를 사용하는 경우 inotify (manpage)을 사용하여 파일 이벤트에 대한 디렉토리를 모니터링 할 수 있습니다. ruby interface for inotify이있는 것으로 보입니다. 위키 백과에서

:

Some of the events that can be monitored for are: 
IN_ACCESS - read of the file 
IN_MODIFY - last modification 
IN_ATTRIB - attributes of file change 
IN_OPEN and IN_CLOSE - open or close of file 
IN_MOVED_FROM and IN_MOVED_TO - when the file is moved or renamed 
IN_DELETE - a file/directory deleted 
IN_CREATE - a file in a watched directory is created 
IN_DELETE_SELF - file monitored is deleted 

은 Windows 작동하지 않습니다 (내가 리눅스 이외의 다른 유닉스에 대해서도 생각하지 않는다) inotify를가 존재하지 않기 때문에.

+0

그것이 바로 제가 찾고있는 것입니다. 하지만 저는 Mac에 있습니다. 힌트를 사용하여 FSEvents http://en.wikipedia.org/wiki/FSEvents가 동일한 작업을 수행해야하는 것처럼 보입니다. 2 개의 보석을 발견했습니다. lib의 이름을 따서 붙인 이름은 2 년 만에 만지지 않았고, 다른 하나는 6 개월이었습니다. 나는 이번 주에 그것들을 시험해보고 질문을 고칠 것이다. 고마워. –

+0

주사위가없는 것 같습니다. 최신 보석은 오래된 보석에만 사용됩니다. 오래된 보석은 분명히 .pkg로 설치해야만하는 RubyCocoa를 사용합니다. Ruby의 많은 버전을 가지고 있기 때문에 어떤 버전을 설치해야하는지 모르겠습니다. 아직 필요하지 않기 때문입니다. 이 팁을 주셔서 감사 드리며 계속 노력하겠습니다. –

0

사용자의 경로를 제어 할 수 있습니까? 스크립트 또는 exe 파일을 놓고 표준 mv 명령 앞에 경로를 지정하십시오. 이 스크립트로 당신이 필요로하는 것을 수행 한 다음 표준 mv를 호출하여 이동을 수행하십시오.

각 사용자 프로필의 별칭. 별명이 대체 mv 명령을 호출하게하십시오.

또는 기존 mv 명령의 이름을 바꾸고 동일한 디렉토리에 대체 파일을 넣은 다음 mv를 호출하고 원하는대로 작업 한 후 새로 이름이 바뀐 mv 명령을 호출하게하십시오.

+0

파일 관리자와 같은 다른 응용 프로그램이 일반적으로 쉘 명령을 사용하지 않기 때문에 다른 응용 프로그램 (예 : 파일 관리자)이 파일을 이동하는 경우이를 감지하지 못합니다. –

+0

물론. 그리고 그것은 내가 UNIX 시스템에서 GUI를 고려해 보지 못했던 나의 사각 지대를 보여줍니다 :) 결국 명령 행을 얻었습니까? – Karl

관련 문제