Automator를 사용하여 Finder에서 빈 폴더의 모양을 변경하는 방법은 무엇입니까?

Automator를 사용하여 Finder에서 빈 폴더의 모양을 변경하는 방법은 무엇입니까?

Apple Automator를 사용하여 계층 구조의 빈 폴더에 레이블을 지정하려고 합니다. 기본적으로 나는 빈 폴더 계층으로 프로젝트를 시작하고 작업하면서 폴더를 채웁니다. 파일이 포함되어 있지 않고 그 하위 항목에도 파일이 포함되어 있지 않은 모든 빈 폴더(회색)에 레이블을 지정하는 워크플로를 원합니다.

즉, 빈 프로젝트를 생성할 때 모든 폴더는 회색이어야 합니다. 어디에도 "파일"이 없고 빈 폴더만 있기 때문입니다. 그러나 파일을 어딘가에 배치하면 해당 파일은 상위 항목이고 모든 조부모 항목은 더 이상 회색으로 표시되지 않습니다.

나에게 필요한 것을 찾았다고 생각했는데Finder에서 빈 폴더의 모양을 변경하는 방법은 무엇입니까?그러나 빈 폴더에 레이블을 지정하고 있습니다. 내 프로젝트에서는 모든 상위 폴더에 폴더가 포함되어 있으므로 비어 있지 않기 때문에 마지막 하위 항목만 회색으로 표시됩니다.

Automator의 /bin/bash 쉘 스크립트에서 실행 중인 코드는 다음과 같습니다.

find "$@" -type d -empty

그런 다음 "Label finder items"에 전달하여 결과를 회색으로 바꿉니다.

테스트 폴더에서 실행할 때 얻는 결과는 다음과 같습니다.

  • 테스트 폴더(회색 아님)
    • 폴더 1(회색)
    • 폴더 2(회색 아님)
      • 폴더 A(회색)
    • 폴더 3(회색 아님)
      • 테스트.txt
    • 폴더 4(회색 아님)
      • 폴더 A(회색 아님)
        • 테스트.txt

그리고 제가 찾고 있는 결과는 다음과 같습니다.

  • 테스트 폴더(회색 아님)
    • 폴더 1(회색)
    • 폴더 2(회색)
      • 폴더 A(회색)
    • 폴더 3(회색 아님)
      • 테스트.txt
    • 폴더 4(회색 아님)
      • 폴더 A(회색 아님)
        • 테스트.txt

어떤 도움이라도 대단히 감사하겠습니다!

아, 또한 Hazel에서 워크플로를 실행할 수 있다고 믿습니다. 가끔 자동으로 실행되도록 하는 더 좋은 방법이 있다면 그것도 알고 싶습니다.

감사해요.

편집: 예를 들어 폴더의 마지막 파일을 삭제하는 경우 .ds_store 파일(가정)로 인해 폴더가 비어 있지 않게 표시된다는 사실을 방금 깨달았습니다.

답변1

몇 가지 사례를 시도한 결과 필요에 따라 작동하는 것 같습니다.

쉘 스크립트, usr/bin/perl, 입력 전달 as arguments.

자동화 서비스

use File::Find;

find({ wanted => \&find_files, no_chdir => 1 }, @ARGV);

sub find_files
{
    if (-f $_)
    {
        ($file) = $_ =~ /.*\/(.*)$/;
        push (@all_files, $_) if ($file ne ".DS_Store");
    }
    else
    {
        push (@all_folders, $_);
    }
}

sub osascript($) { system 'osascript', map { ('-e', $_) } split(/\r/, $_[0]); } 

foreach(@all_files)
{
    @paths = split(/\//, $_);
    for $i (0..$#paths-1)
    {
        if ($i == 0)
        {
            $x = "$paths[$i]";
        }
        else
        {
            $x = "$last[$i-1]/$paths[$i]";
        }
        push(@last, $x);
        $temp{$x} ++;
    }
    @last = ();
 }

@not_gray_folders = keys %temp;
foreach(@all_folders)
{
    $folder = $_; $flag = 0;
    foreach(@not_gray_folders)
    {
        if ($folder eq $_)
        {
            $flag = 1;
        }
    }
    if (!$flag)
    {
        $label = 7;
    }
    else
    {
        $label = 0;
    }
    &osascript ("tell application \"Finder\" to set label index of alias POSIX file \"$folder\" to $label");
}

관련 정보