Переместить имена файлов с путем к файлу в каталоге вместе с файлами - PullRequest
0 голосов
/ 28 февраля 2019

Я перемещал только имена файлов в текстовом файле, который работал с использованием:

cd /data/sources/
find $PWD -type f -name "Asset_*">> /data/processing/asset_files.txt

Но мне также необходимо:

  1. Переместить Asset_* файлы такжев /data/processing/.
  2. Переместить первые 1000 файлов в /data/processing/.

Как добавить эти две вещи?

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Рефакторинг ответа @Dominique позволяет использовать команду find и перемещать файлы.Это может занять много времени (зависит от количества файлов). Команда выглядит так:

cd /data/sources/
find $PWD -type f -name "Asset_*" -exec mv {} /target_dir \;

Если вы хотите переместить ровно 1000 файлов, вы можете сделать это с помощью

a=1
cd /data/sources/
for i in $PWD/Asset_*
do
mv "$i" /target_dir
a=$(($a + 1))
if [ "$a" -gt 1000 ]
then break
fi
done
0 голосов
/ 28 февраля 2019

Вы на неправильном пути, хотите скопировать / переместить 1000 записей.Кажется, у вас много Asset_* файлов (более 1000), и, ограничив число до 1000, вы хотите проверить правильность поведения, а затем сделать это для всей группы.
Хотя это кажется правильным,ограничение до 1000 является довольно обременительным и сделает ваш скрипт бесполезным.
Я бы предложил другой подход: представьте, что у вас есть такие имена файлов:

Asset_00000
Asset_00001
Asset_00002
...
Asset_00010
Asset_00011
...
Asset_99999

Затем вы можете сначала попытатьсявы делаете, используя Asset_0000*, а затем, как только вы убедились, что все правильно, сделайте это для всех Asset_* файлов.

Что касается перемещения, вы можете сделать это следующим образом:

find /directory -name "Asset_0000*" -exec mv {} /target_directory \;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...