如何从满足特定条件的目录中复制文件

如何从满足特定条件的目录中复制文件

我正在尝试将文件从一个目录复制A到另一个目录B。但我只想复制尺寸较小的文件X 没有在 file 中指定文件扩展名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

相关内容