ディレクトリリスト(必要に応じてフォルダリスト)があります。
<something>.txt
各ディレクトリには、データベースダンプから生成されたというファイルがあります。
ファイルが見つからない場合は、コマンドが失敗し、尊重してディレクトリに移動し、残りのチェックを完了できないため、ファイルが存在する場合にのみ進んで名前を変更する<something>.txt
cronジョブを実行したいと思います。
"${PWD##*/}"_info.txt
*.txt
mv
cd ..
どちらが意図的ですか?いいえ以下のコードスニペットで説明または表示されています。。
したがって、CONTEXTコードは次のようになります。
fの場合<ディレクトリ一覧> する CD "${f}" if [-e "*.txt"]; ←質問部分です mv *.txt "${PWD##*/}".txt ← 残りはコンテキストを提供するだけです。 フィリピン諸島 CD.. 完璧
この小さなクリップについての専門家のコメントがありますか?
この例をまとめました。重要な部分は条件です:
[ -e "*.txt" ]
ファイルが存在しても<something>.txt
条件は失敗します。
それが私が尋ねるものです。
ベストアンサー1
1つの可能性は、globでこれらの項目で配列を作成し、配列に要素があるかどうかを確認できることです。たとえば、
cur_opt=$(shopt -p nullglob) # get current status so we can restore
shopt -s nullglob # to let the glob expand to nothing
txt_files=( *txt )
$cur_opt # restore nullglob setting to what it was before
if [ ${#txt_files} -gt 0 ]; then
...
fi
ファイルに対して操作を実行するには、配列に要素があるかどうかをテストするのではなく、配列を繰り返すこともできます。
一致するものがあるかどうか本当に確認したい場合は、compgen
次のようなものを使用できます。
if [ ! -z "$(compgen -G "*.txt") ]; then
...
fi
これは単にリターンを確認することができるcompgen
ので、
if compgen -G "*.txt" &>/dev/null; then
...
fi