Я использую команду:
xargs -a file_list.txt cp -t /path/to/dest
но имена файлов с пробелами обрезаются и поэтому не копируются.
что может быть сделано?
Xargs хорош / быстр / и т.д., но его непросто понять новичкам в написании сценариев оболочки.
Я думаю, это будет намного удобнее для чтения (и более чистым, чем в подоболочке).
#!/bin/bash
while read filename; do
cp -a "$filename" /path/to/dest
done < file_list.txt
Ты можешь сделать это
IFS=$'\n' ; for file in `cat file_list.txt` ; do cp $file /path/ ; done
Объяснение
Если бы это был сценарий оболочки и красиво отформатированный
#!/bin/bash
IFS=$'\n'
for file in `cat file_list.txt` ; do {
cp $file /path/
} done
cat file_list.txt | tr '\n' '\0' | xargs -r0i cp -t /path/to/dest/ "{}"