ドキュメント内のすべてのクライアントのフォルダ一覧があるため、~/Documents/clients/
フォルダ内のフォルダは次のように表示されます。
Angelina_Julie-client23456
Brad_Pitt-client34567
Tom_Hanks-client12345
など。その後、次のスクリプトがあります。
clientcode="client12345"
cdate=$(date +%F)
mydir="/home/userA/Documents/clients/$clientcode"_"$cdate/"
問題は、"/home/userA/Documents/$clientcode"_"$cdate/"
クライアントコードの前にクライアントがあるため、このパスが見つからないことです。したがって、この場合は見てわかるように、firstname_lastname-
正しいmydirが追加されます。だから私はFirstname_Lastnameを自動的にインポートして含める方法が気になります。フォルダ内で一意かどうかに応じて?/home/userA/Documents/Tom_Hanks-$clientcode"_"$cdate/
Tom_Hanks-
$clientcode
~/Documents/clients/
mydir
答え1
検索を使用する:
clientcode="client12345"
cdate=$(date +%F)
mydir="$(find /home/userA/Documents/clients/ -name "*${clientcode}*" -type d)_$cdate"
名前に対応するディレクトリを含むディレクトリを見つけ、最後にclientcode
追加します。_$cdate
注:実際には、ディレクトリ名は変更されません。mydir
実際には存在しないように見えるディレクトリ名が存在します。
答え2
これらのディレクトリが与えられると、.../clients/*-"$clientcode"/
一致するディレクトリ名に展開されます。アスタリスクは引用されていません。 (しかし、これは正規表現ではなく、グローバルパターンです。)
ただし、拡張ではパターンが使用できないため、ループを使用して問題を解決する必要があります。
mydir=
for d in ./clients/*-"$clientcode"/; do
if [ "$mydir" ]; then
echo "More than one matching directory!" >&2
fi
mydir=$d
done
if [ -z "$mydir" ]; then
echo "No match!" >&2
fi
./clients/*-"$clientcode"_*/
日付が一致するファイル名の一部である必要があるか(so)、日付を追加して新しいファイルを作成するか()はわかりませんnewdir="${mydir}_${date}"
。