これを行うより良い方法があることを知っていますが、答えを見つけるための正しい場所を探していません。
私数字このタイプのステートメント(例:1-100または他のファイル名のリスト)。基本的に私はそれらをすべてチェックし、同じタイプのコマンドを実行します。
if [ -f ~/file1 ]; if [ -f ~/Backup/file1 ]; rm〜/ファイル1; #いつかファイルサイズやファイルの日付を確認することもできます(評価調査)。 その他 cp -ip ~/ファイル1 ~/バックアップ/ファイル1; rm〜/ファイル1; フィリピン諸島 フィリピン諸島
この項目を繰り返しコピーして貼り付ける必要なく、これを関数にする方法(file1で一度繰り返してからfile2で再度繰り返すなど)が必要です。
初心者には明確なものが欲しいです。一度作業を始めると、おそらく5年間は再び見られないでしょう。これの利点は、何が起こっているのかを明確に知ることができることです:P
私はこれを行ういくつかのコードを読んで、「まあ、それは面白いです。3〜4つ以上のif-thesを実行する必要がある場合はこれを使用する必要があります」と言いましたが、書いていませんでした。
一部のファイルはfilename001、filename002、... filename100です。
特定の名前のファイルにも同じ問題があります。この場合、ファイル名のリストを繰り返し(コードをコピーして貼り付けるのではなく)、新しいファイル名をリストに追加したいと思います。
コマンドラインで何も入力したくありません。すべてがスクリプトに一覧表示されます(それでテストできるので、入力したくないものを台無しにしたり、間違って入力したりすることはできません)。スクリプトによって呼び出された各ファイル名を1行ずつ一覧表示するデータファイルのアイデアは私にとって興味深いものですが、それを実装する方法がわかりません。リンクがありますか?
なぜならたくさんより簡単で効率的です。
私はそれが可能であることを知っているがプログラミングができない人(つまり、5年後の私)にプログラミング方法を本当に知らないところから始めたとき、そしてそこにいることを明らかにしなければなりません。転がる時が来るでしょう。多くのことが忘れられます(他の人に渡されない場合)。私は基本的に私が理解できるものを取り、私の目的に合うように乱用できるまで働きます。これで、コンピュータは私がやっている作業の種類に合わせて十分に高速なので、私のスクリプトは非常に効率的である必要はありません。
バックアップファイルが存在する場合は、現在のファイルを削除します(存在する場合)。それ存在します - 存在しない場合は、スクリプトが次の可能性に進むことを望みます。バックアップが存在しない場合は、現在ファイルをコピーしています(割り当て量などを超えると(他のものがコピー中にクォータを発生/吸収できる場合)、エラーが発生して回復できない項目は削除されないことを願っています)、その後削除します。現在のファイル。
バックアップファイルが役に立つかどうかをテストするために、タイムスタンプ(どれが最新ですか?)、サイズ(どれが大きいですか?)、ハッシュ(ファイルが正確にコピーされていますか?)など、いくつか追加してもかまいません。今すぐ必要です。
ベストアンサー1
まあ、私の考えはあなたがループを探していると思います。
cd ~; i=1000; set --
until [ "$((i+=1))" -gt 1100 ]
do _i=${i#1}
if [ -f ./file"$_i" ] &&
[ -f ./Backup/file"$_i" ]
then rm ./file"$_i"
else set -- ./file"$_i" "$@"
fi
done
[ "$#" -gt 0 ] &&
cp -ip "$@" ./Backup &&
rm "$@"
これは最大100まで計算され、必要に応じてすぐにループを閉じてfile[001-100]
コピーする必要があるファイルの配列を構築します。実際には、シェル配列の代わりに名前付き配列を使用することを選択した場合でも同じことができます。cp -ip
rm
最大100までゼロで埋められるイテレータ(初期-gt
評価では中止)ただし、作成したスクリプトをかなり簡単に変更して、最大999個のファイルを処理できます。