Может ли linux сканировать две директории? После сканирования сопоставьте две директории, основываясь на сходстве имен файлов и файлов передачи.

Я ищу для передачи файла "каталог"/seq0001.pdf в папку "другой каталог"/001 и "каталог"/seq0002.pdf в папку "другой каталог"/002 и т.д.

Когда создается новый увеличенный номер файла, я бы хотел переместить этот новый файл в новый каталог.

Новая папка не должна быть сделана. Как и при появлении нового файла, другая работа помещает информацию в эту папку и создает новую папку.

Я знаю, как сделать прямое движение, но это будет работать только для указанных файлов. Можете ли вы перемещать файлы по совпадению, вместо того чтобы каждый раз вручную перемещать файлы?

1 ответ1

0

Возможно, есть способ сократить это (на самом деле, существует множество хороших альтернатив для анализа имени файла; проверьте этот вопрос - я обновлю здесь, как только у меня появится возможность), но один из способов - сначала создать скрипт, который обрабатывает один файл. Например, сохраните следующее как move.sh:

#!/bin/sh
subdir=`echo -n "${1%.*}" | tail -c3`
mv -v "$1" "/path/to/$subdir"

Отрегулируйте по вкусу. Это займет часть имени файла перед последним "." и используйте самые правые три символа в качестве целевого каталога (например, «seq0002.pdf» идет в «/path/to/002»).

chmod 755 move.sh чтобы сделать его исполняемым.

Я рекомендую поместить этот скрипт в другой каталог, чтобы он не мешал. Затем вы можете использовать, например, find чтобы выполнить его для всех файлов, или просто запустить его для одного файла за раз, например:

find . -maxdepth 1 -type f -exec /wherever/move.sh {} \;

Или для одного файла (и при условии, что move.sh находится в текущем каталоге):

./move.sh seq0001.pdf

Если вы хотите выбрать более сложные пути, вы можете расширить скрипт, например:

#!/bin/sh
subdir=`echo -n "${1%.*}" | tail -c3`

if [ $subdir = "001" ] ; then
    rootdir="/directory";
elif [ $subdir = "002" ] ; then
    rootdir="/another/place";
else
    rootdir="/default/root";
fi

mv -v "$1" "$rootdir/$subdir"

Снова поправляемся по вкусу. Возможности довольно безграничны.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .