シェルスクリプトは、.zipなしで同じ名前の宛先のフォルダにファイルを抽出し、zip以外の各ファイルも同じ場所に移動します。

シェルスクリプトは、.zipなしで同じ名前の宛先のフォルダにファイルを抽出し、zip以外の各ファイルも同じ場所に移動します。

スクリプトを練習する必要があります。これまで、.zipとフラットファイルをソースの場所に置くときに動作する次のスクリプトがあります。複数のファイルを入れると正しく実行されず、より効率的な方法で役立つ人がいるかどうかを知りたいです。スクリプトがソースフォルダから.zipファイルを検索し、.zipを引いた同じ名前のフォルダに解凍し、新しいフォルダを他のフラットファイルまたは.zip以外のファイルと組み合わせる必要があることを明確にする必要があります。フォルダの保存先に移動します。ソースを別の場所にコピーし、元の.zipファイルを削除します。

#! /bin/bash

cd "/path/to/source/Location"
for file in $(ls *.zip); do unzip $file -d $(echo $file | cut -d . -f 1); done
mv $(echo $file | cut -d . -f 1) /Destination/for/Unzip
rm *.zip
mv LOCK* /Destination/For/Flat/Files

ベストアンサー1

シェル構成を使用して拡張を削除し、アーカイブをターゲットに直接抽出して、forglobbingを直接使用できます。.zip

#!/bin/bash

cd "/path/to/source/location"
for file in *.zip; do
  unzip "${file}" -d "/destination/for/unzip/${file%%.zip}" && rm "${file}"
done
mv LOCK* /destination/for/flat/files

また、アーカイブが正常に抽出された後にのみアーカイブが削除されることを保証します。

おすすめ記事