[編集] 問題は解決しました。スクリプトを以下に更新しました。助けてくれてありがとう。フォルダー名のスペースと空でないフォルダーですべてが機能するようにするために、いくつかの改造が必要でした。
本当にこれで苦労します。
ファイルがダウンロードされると、私のシステムは次の 2 つを作成します。
ファイル(私の「Jobs」ディレクトリに作成)、例えば
- Johns.Pizza.Place.5489231.job
- Marks.Hair.Salon.NY.888.job
- Rachels.Bike.and.Boat.Shop.11122287865.job
ファイルの名前を持つフォルダー(「Temp」ディレクトリに作成)、たとえば
- ジョンズ・ピザ・プレイス
- マークス.ヘア.サロン.NY
- Rachels.Bike.and.Boat.Shop
ご覧のとおり、フォルダー名は常にファイル名の一部と一致しますが、各ファイルには常に乱数の長さと拡張子 (「.job」) が追加されます。
私がやりたいことは、スクリプトを実行できるようにすることです
ファイルのディレクトリ内のフォルダー名を一致させますが、ファイルには乱数と拡張子の両方が追加されているため、部分一致のみを行っています。
関連ファイルが見つからない場合は、これらのフォルダーを削除します(特定のアクションの後にHazelを使用してファイルを削除しています)。フォルダーに一致するファイルが見つかった場合、そのフォルダーを削除したくありません。
これが私が試したものですが、不完全であることはわかっています。明らかに、拡張子を削除した部分的なファイル名と一致するようにパス内のフォルダー名だけを取得しようとしていますが、乱数文字列も削除する方法がわかりません。
[編集]: 以下の最終作業スクリプト
#! /bin/sh
MainDir="/Users/Dhy/Desktop/Temp Files/1. All Files/"
JobDir="/Users/Dhy/Documents/All Jobs/"
find "$MainDir"* -maxdepth 0 -type d | while read FolderName; do
SuffixName=$(basename "${FolderName}");
preserve=''
for file in "$JobDir"*.job; do
if [[ $file\.[0-9]+ =~ $SuffixName ]]; then
preserve='on'
break
fi
done
if [ -z $preserve ]; then
rm -rf "$MainDir$SuffixName"
fi
done
どんな助けでも大歓迎です。