回答:
(GNUを想定して)の-t
オプションがありません。mv
mv
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/
(開始時のスペースは無視されます)