Apple Automator를 사용하여 계층 구조의 빈 폴더에 레이블을 지정하려고 합니다. 기본적으로 나는 빈 폴더 계층으로 프로젝트를 시작하고 작업하면서 폴더를 채웁니다. 파일이 포함되어 있지 않고 그 하위 항목에도 파일이 포함되어 있지 않은 모든 빈 폴더(회색)에 레이블을 지정하는 워크플로를 원합니다.
즉, 빈 프로젝트를 생성할 때 모든 폴더는 회색이어야 합니다. 어디에도 "파일"이 없고 빈 폴더만 있기 때문입니다. 그러나 파일을 어딘가에 배치하면 해당 파일은 상위 항목이고 모든 조부모 항목은 더 이상 회색으로 표시되지 않습니다.
나에게 필요한 것을 찾았다고 생각했는데Finder에서 빈 폴더의 모양을 변경하는 방법은 무엇입니까?그러나 빈 폴더에 레이블을 지정하고 있습니다. 내 프로젝트에서는 모든 상위 폴더에 폴더가 포함되어 있으므로 비어 있지 않기 때문에 마지막 하위 항목만 회색으로 표시됩니다.
Automator의 /bin/bash 쉘 스크립트에서 실행 중인 코드는 다음과 같습니다.
find "$@" -type d -empty
그런 다음 "Label finder items"에 전달하여 결과를 회색으로 바꿉니다.
테스트 폴더에서 실행할 때 얻는 결과는 다음과 같습니다.
- 테스트 폴더(회색 아님)
- 폴더 1(회색)
- 폴더 2(회색 아님)
- 폴더 A(회색)
- 폴더 3(회색 아님)
- 테스트.txt
- 폴더 4(회색 아님)
- 폴더 A(회색 아님)
- 테스트.txt
- 폴더 A(회색 아님)
그리고 제가 찾고 있는 결과는 다음과 같습니다.
- 테스트 폴더(회색 아님)
- 폴더 1(회색)
- 폴더 2(회색)
- 폴더 A(회색)
- 폴더 3(회색 아님)
- 테스트.txt
- 폴더 4(회색 아님)
- 폴더 A(회색 아님)
- 테스트.txt
- 폴더 A(회색 아님)
어떤 도움이라도 대단히 감사하겠습니다!
아, 또한 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");
}