디렉터리의 필터링된 보기를 만드는 방법은 무엇입니까?

디렉터리의 필터링된 보기를 만드는 방법은 무엇입니까?

파일이 많은 폴더가 있습니다. 그 중 일부는 다른 것보다 더 일반적으로 사용되고 필요합니다.

특정 필터를 사용하여 해당 디렉터리의 보기를 나타내는 "폴더"를 갖고 싶습니다. 파일 이름 "has _final" 또는 파일 크기 < 5MB와 같은 필터.

find, grep 등의 명령이 있다는 것을 알고 있습니다. 나는 그 결과를 "하드 링크"가 있는 파일 시스템 디렉토리로 원합니다.

이를 수행할 수 있는 방법이 있습니까?

답변1

Google에서 간단히 검색하면 여러 FUSE 솔루션이 나옵니다.

  • cmdfs, 필터링 외에도 변환을 수행하고 동적으로 파일을 생성할 수도 있습니다.
  • ROFS 필터, 정의된 패턴과 일치하는 파일로 읽기 전용 디렉터리를 생성하고
  • libfuse wiki에 나열된 디렉토리 목록을 사용하는 다양한 기타 솔루션https://github.com/libfuse/libfuse/wiki/Filesystems.

답변2

당신은 하드 링크를 원한다고 말했지만 "뷰를 나타내는 "폴더""도 원한다고 말했습니다. 뭔가 만족스럽다면좋다원하는 것은 쉘 기능을 고려하십시오.

ls_final() { ls "$@" | grep has_final; }

현재 문의하신 질문은

파일 이름 "has_final"

이게 오타인지는 모르겠지만

파일 이름에 "_final"이 포함되어 있습니다.

그렇다면 그에 grep따라 변경하십시오.

파일 크기별로 필터링하는 것은 약간 어렵습니다. 특히 선택 제한이 10의 거듭제곱(또는 10의 거듭제곱을 곱한 작은 정수)이 아닌 경우 더욱 그렇습니다. 항상 (소문자 L) 옵션이나 이에 상응하는 옵션을 grep사용하는 경우 로 관리할 수 있습니다. -l다른 방법도 있을 수 있지만 이를 우아하고 안전하며 효율적으로 수행하는 것은 매우 어려울 수 있습니다.

긴 이야기 짧게ls_finalls_small사용 등 의 습관을 기르면처럼 보인다필요한 파일만 존재합니다.

답변3

cd /path/to/filter_directory
find /source/dir -mindepth 1 -maxdepth 1 [...filter tests...] -exec ln -t . {} +

관련 정보