Drupal 테마에 대한 디렉토리를 비교하려고 합니다. 드루팔 테마는 여러 파일로 구성된 디렉토리인데 어떤 파일이 필수적인지 알아보려고 합니다. 예를 들어 둘 다 template.php
또는이라는 파일이 있을 수 있습니다 page.tpl.php
.
여러 디렉터리에 대한 모든 공개 파일 세트를 찾는 방법은 무엇입니까? 내 경우에는 모든 "동일한" 파일(동일한 이름을 가진 파일)이 동일한 레벨 디렉터리에 있습니다.
답변1
모든 디렉터리에 공통된 파일의 모든 이름(경로 아님)을 나열합니다.
dirs=( "A dir" "B dir" "C dir" "D dir" )
find "${dirs[@]}" -maxdepth 1 -type f -name "*" -printf '%f\n' |
sort | uniq -c | sed -n "s/^ *${#dirs[@]} //p"
또는 디렉터리를 인수로 사용하여 스크립트 파일이나 함수로 호출하세요.
find "$@" -maxdepth 1 -type f -name "*" -printf '%f\n' |
sort | uniq -c | sed -n "s/^ *$# //p"
답변2
이름이 나타나는 디렉토리 수에 따라 정렬된 이름 목록을 표시할 수 있습니다.
find */ | # traverse all the template directories
sort -t / -k 2 | # sort, ignoring the first field
tr '/' '\t' | # turn / into tabs
uniq -f 1 -c | # count duplicates, ignoring the first field
tr '\t' '/' | # turn tabs back into /
sort -t / -s -k 1n # sort by the number of occurrences
답변3
그리고융합하다두 디렉터리를 비교하여 어떤 파일이 한 디렉터리에는 있고 다른 디렉터리에는 없으며 그 반대의 경우도 확인할 수 있습니다. 또한 공통 파일 간의 차이점을 표시할 수도 있습니다.
답변4
3개의 디렉터리(그 중 하나는 현재 디렉터리이고 두 개는 "a"와 "b")를 사용하여 다음과 같이 테스트를 연결할 수 있습니다.
ls a/$(ls b/$(ls *.php) 2>/dev/null) 2>/dev/null
파일에 공통 패턴(예: .php)이 있고 파일 이름에 공백이 포함되어 있지 않은 경우.
스크립트에서 이를 사용하는 것은 ls
항상 문제가 있으며 일반적으로 사용을 권장하지 않습니다. 그러나 검색이 시작되는 디렉터리에 있는 모든 파일에 대한 개요가 있고 공백이나 "*" 또는 "? " 그런 특수 문자. ", "<" 또는 "|"는 사용하기 전에 저장해야 합니다.