1

У меня есть список имен файлов в list.txt, которые имеют 'abc1.png, abc2.png, abc3.png ....».

Тем не менее, я не знаю каталоги, где находятся файлы.

Я хочу найти все файлы в текстовом файле и переместить их в новую папку.

3 ответа3

0

Вам нужно прочитать каждое имя файла построчно, затем попытаться find его, используя опцию name , и, наконец, mv его цели:

while IFS= read -r filename; do
    find /somewhere -type f -name "$filename" -exec mv -- {} /somewhere/else/ \;
done < file.txt

{} Будет заменен найденным путем к файлу.

0

Предполагая, что ваши имена файлов не содержат символов «,» или новой строки, и каждый файл существует в list.txt только один раз. Вы также, естественно, должны изменить новый каталог на каталог, который вам нужен. Если какой-либо файл в list.txt отсутствует, файл не копируется (и информация не передается).

sed -s "s/, /\\n/g" list.txt | xargs -IFILE -n1 find -name FILE -exec mv {} newdirectory \;
-1

Это легко с некоторыми bash:

сначала найдите ваши файлы с помощью команды find и перенаправьте выход в другой файл:

для аргумента в $(cat list.txt); найти / -name $ arg -print >> files_with_path.txt; сделанный

тогда mv файлы:

для аргумента в $(cat files_with_path.txt); do mv $ arg /your /dest /folder; сделанный

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