📌

bashでフォルダ内の条件のあうファイルを別のフォルダに移動させる

2023/11/12に公開

はじめに

本記事では、Git Bashを使ってフォルダ内の条件に合うファイルを
簡単に移動する方法を紹介します。

Git Bashとは

フォルダ内のファイルを操作するための便利なツールです。

特定の条件に一致するファイルを別のフォルダに移動させる方法

bashスクリプトを使用して、特定の条件に一致するファイルを
別のフォルダに移動させる方法はいくつかあります。

以下に紹介するスクリプトでは、
source_folderに移動元のフォルダのパス、
destination_folderに移動先のフォルダのパスを指定してください。
スクリプトはメモ帳等のエディタにコピペで貼り付けて、
move_file.shという名前でデスクトップに保存してください。

スクリプトを実行する前に、実際のパスに適切に置き換えてください。
また、移動元のフォルダには対象のファイルが存在し、
移動先のフォルダが事前に作成されていることを確認してください。

以下、2つのコマンドを打ち込むことで、スクリプトを実行できます。

cd Desktop
./move_file.sh

以下のサンプルを参考に、条件に合わせてスクリプトを調整することで、
やりたい条件に基づいてファイルを移動させれます。

特定の拡張子に一致するファイルを移動する場合:

move_file.sh
# 移動元のフォルダと移動先のフォルダを指定
source_folder="/path/to/source_folder"
destination_folder="/path/to/destination_folder"

# 拡張子が ".txt" のファイルを移動
find "$source_folder" -type f -name "*.txt" -exec mv {} "$destination_folder" \;

ファイル名に特定の文字列が含まれるファイルを移動する場合:

move_file.sh
# 移動元のフォルダと移動先のフォルダを指定
source_folder="/path/to/source_folder"
destination_folder="/path/to/destination_folder"

# ファイル名に "keyword" が含まれるファイルを移動
find "$source_folder" -type f -name "*keyword*" -exec mv {} "$destination_folder" \;

ファイルの更新日時が特定の範囲内にあるファイルを移動する場合:

move_file.sh
# 移動元のフォルダと移動先のフォルダを指定
source_folder="/path/to/source_folder"
destination_folder="/path/to/destination_folder"

# 更新日時が 7 日前から今日までのファイルを移動
find "$source_folder" -type f -newermt "7 days ago" ! -newermt "1 day ago" -exec mv {} "$destination_folder" \;

それぞれの例では、findコマンドを使用して条件に一致するファイルを検索し、
-exec mvを使用してファイルを移動しています。

for文で一つずつファイルを移動させる方法

findコマンドを使う以外にも、
for文で一つずつファイルを移動させる方法もあります。

例えば、sampleFileName_1.pngからsampleFileName_1000.png
までの1000枚の写真があるとします。
このうちsampleFileName_461.pngからsampleFileName_1000.pngまでの
写真を別のフォルダに移動させるスクリプトは、以下のように書けます。

move_file.sh
# 移動元のフォルダと移動先のフォルダを指定
source_folder="/path/to/source_folder"
destination_folder="/path/to/destination_folder"

# 461から1000までのファイルを移動
for ((i=461; i<=1000; i++))
do
    filename="sampleFileName_$i.png"
    mv "$source_folder/$filename" "$destination_folder/$filename"
done

Discussion