Как копировать файлы из каталога, удовлетворяющего определенным критериям

Я пытаюсь скопировать файлы из каталога A в каталог B . Но я хочу копировать только файлы с меньшим размером, чем X и , не имеющие расширений файлов, указанных в файле extension.txt .

Моя основная проблема здесь в том, что я не хочу удалять ненужные файлы после копирования - я хочу скопировать только нужные мне файлы, используя скрипт bash .

Есть идеи?

0
17.04.2016, 17:23
2 ответа

Расширенная версия ответа @ 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
28.01.2020, 02:35
# 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
0
28.01.2020, 02:35

Теги

Похожие вопросы