У меня есть текстовый файл со списком местоположений файлов, которые я хочу переместить, сначала во временный каталог, сделать некоторые в исходном каталоге, а затем переместить файлы обратно в исходное местоположение.
СписокФайл имеет формат, сгенерированный, скажем, командой find, например:
~/$ find . -name "*.[ch]" > ~/tmp/my_file_list.txt
В настоящее время я использую sed
для манипулирования файлом на экране, а также вырезания и вставки его выходных данных для выдачи.команды.Я нахожу это оскорбительным, но оно работает:
~/$ sed -r 's_.+_cp & ~/tmp/_' ~/tmp/my_file_list.txt
(копировать и вставлять выходные данные, затем помещать файлы обратно)
~/$ sed -r 's_.+/(.+)_cp ~/tmp/\1 &_' ~/tmp/my_file_list.txt
(копировать ... вставлять ... wince)
Как я могу сделать две вышеупомянутые строки просто без копирования и вставки ... Я думаю, xargs может содержать решение, к которому я стремлюсь.
[Редактировать] Для работы с пробелами:
~/$ sed -r 's_.+_cp "&" ~/tmp/_' ~/tmp/my_file_list.txt
и
~/$ sed -r 's_.+/(.+)_cp "~/tmp/\1" "&"_' ~/tmp/my_file_list.txt