特定の条件を満たすディレクトリからファイルをコピーする方法

特定の条件を満たすディレクトリからファイルをコピーする方法

Aあるディレクトリから別のディレクトリにファイルをコピーしようとしていますB。しかし、小さいサイズのファイルだけをコピーしたいと思います。X そしてファイルにファイル拡張子が指定されていませんextension.txt

私の主な問題は、処理後に不要なファイルを削除したくないことです。ただbashスクリプトを使用して必要なファイルをコピーしたいと思います。

どんなアイデアがありますか?

答え1

@mihver1 回答の拡張バージョンです。man findこれを詳しく知りたい場合は、見てください。

#!/bin/bash
X=1000c # or what ever your size limit is
find_args=()
for ext in $(cat extensions.txt); do
  find_args=( "${find_args[@]}" -o -name "*.$ext" )
done
find_args=( -type f -size -$X -not \( -false "${find_args[@]}" \) )
# first try it
find directory_A "${find_args[@]}" -print
# if that looks fine, copy the files
find directory_A "${find_args[@]}" -exec cp {} direcotry_B +

答え2

# assuming that extensions.txt looks like:
# *.txt
# *.csv
# *.img

X=your_size
pushd directoryA
rsync --exclude-from=extensions.txt $(find . -type f -size -${X}c) directoryB/
popd

関連情報