回答:
(GNUを想定して)の-tオプションがありません。mvmv
cat /tmp/list.txt | xargs mv -t /app/dest/
以下(X Tianの回答に触発された):
xargs mv -t /app/dest/ < /tmp/list.txt
先頭(および末尾)のスペースは削除されます。ファイル名内のスペースは問題を引き起こします。
ファイル名にスペース、タブ、引用符、バックスラッシュがあるxargs場合は、GNU を想定して次のように使用できます。
sed 's/^ *//' < /tmp/list.txt | xargs -d '\n' mv -t /app/dest/
ファイル名が比較的正常であると想定します(改行や奇妙な文字はありません)。
while read file; do mv "$file" /app/dest/; done < list.txt
奇妙なファイル名を処理するには(ファイル名に改行がある場合は中断します):
while IFS= read -r file; do mv "$file" /app/dest/; done < list.txt
cp -Hrませんが、OSX cpがそれをサポートしているかどうかはわかりません。
ファイルから直接読み取る純粋なxargs
xargs -l -i < flist mv -v {} /app/dst
編集1-以下の@Anthonのコメントの後、
xargs -I{} < flist mv -v {} /app/dst
-i非推奨であり、それ、またはその置換-Iは-l/を意味し--max-lines=1ます。そして、mvファイルごとに個別に実行されます。
mv `cat /tmp/list.txt` /app/dest/
(開始時のスペースは無視されます)