Переместить несколько файлов из списка имен файлов в новую папку

Переместить несколько файлов из списка имен файлов в новую папку

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

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

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

решение1

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

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

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

решение2

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

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

решение3

Это легко сделать с помощью bash:

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

для arg в $(cat list.txt); do find / -name $arg -print >> files_with_path.txt; готово

затем mv файлы:

for arg in $(cat files_with_path.txt); do mv $arg /your/dest/folder; done

Связанный контент