最後に変更された日付に基づいて、ディレクトリ内のいくつかの実行可能ファイルを実行するスクリプトを作成する必要があります。最も古いものは最初に実行する必要があります。どうすればいいですか?
これが私がこれまでにしたことです。
for f in ./jobqueue/*; #accessing the queue
do
chmod +x * # giving executable permission for the files
$f # running the executables
done
答え1
デフォルトでは、シェルワイルドカードは語彙順に展開されます。別のソート順序が必要な場合は、順序付けをサポートするシェルが必要です。これはすでにその構文を引用せずに使用しているzsh
ため、おそらく良いことでしょう。zsh
$f
for f in ./jobqueue/*(.NOm); do
chmod +x $f
$f
done
この(.NOm)
部分はzsh
ワイルドカード修飾子です。.
通常のファイルにのみ適用されます。N
一致するファイルが存在しない場合は、エラーを報告するのではなく拡張機能が空になり(オプションが有効になっているかのように)、修正nullglob
時にrderOm
に変換されますo(大文字は逆順を表します)。m
GNUシェル(bash
)とGNUシェルの場合、ls
その内容は次のとおりです。
eval "files=($(ls -drt --quoting-style=shell ./jobqueue/* 2> /dev/null))"
for f in "${files[@]}"
[ -f "$f" ] && [ ! -L "$f" ] || continue
chmod +x -- "$f"
"$f"
done
答え2
ファイル名にスペース、タブ、改行文字、または?
が含まれておらず、ディレクトリにサブディレクトリが含まれていない場合は、次のように試してください*
。[
for f in $(ls -tr ./jobqueue/) ; do
chmod +x ./jobqueue/$f
./jobqueue/$f
done