파일에서 목록으로 파일 이동 (공백으로)


12

파일 이름이 포함 된 파일이 있습니다. 예를 들면 다음과 같습니다.

/tmp/list.txt (각 줄의 시작 부분에 공백이 있습니다) :

  /tmp/file.log
  /app/nir/home.txt
  /etc/config.cust

한 줄을 사용하여 나열된 모든 파일 /tmp/list.txt/app/dest

따라서 다음과 같아야합니다.

cat /tmp/list.txt | xargs mv /app/dest/

답변:


21

(GNU 가정 )에 -t대한 옵션이 누락되었습니다 .mvmv

cat /tmp/list.txt | xargs mv -t /app/dest/

또는 더 짧음 (X Tian의 답변에서 영감을 얻음) :

xargs mv -t /app/dest/ < /tmp/list.txt

선행 및 가능한 후행 공백이 제거됩니다. 파일 이름 안에 공백이 있으면 문제가 발생합니다.

파일 이름에 공백이나 탭, 따옴표 또는 백 슬래시가있는 경우 GNU xargs를 가정하면 다음을 사용할 수 있습니다.

sed 's/^ *//' < /tmp/list.txt | xargs -d '\n' mv -t /app/dest/

답변 주셔서 감사합니다 . 이것으로 나는 그들 이름에 [!]로 많은 파일 목록을 만들고 다음과 같이 다른 폴더로 이동할 수 있습니다. ls | grep -e ". [!]]"| 티 001.txt; sed 's / ^ * //'<001.txt | xargs -d '\ n'mv -t / destinypath /
inukaze

6

파일 이름이 비교적 제정이라고 가정하면 (개행이나 이상한 문자는 없음) :

while read file; do mv "$file" /app/dest/; done < list.txt 

이상한 파일 이름을 처리하려면 (파일 이름에 줄 바꿈이 있으면 중단됨)

while IFS= read -r file; do mv "$file" /app/dest/; done < list.txt 

안녕하세요 ters, csv 파일의 일치를 기반으로 폴더를 새 디렉토리로 이동하는 방법은 무엇입니까? 이 [ unix.stackexchange.com/questions/433068/… 도와주세요. 감사합니다 !!
user3351523

@ user3351523 귀하의 질문이 마감되었습니다. 임의의 사람들에게 도움을 요청해도 변경되지 않습니다. 대신 질문을 편집하고 사본의 솔루션이 어떻게 도움이되지 않았는지 설명하십시오. "작동하지 않는"것이 있으면 어떻게 실패했는지 설명하십시오. 솔루션이 효과가 있으므로 시도 할 때 어떤 일이 발생하는지 설명해야합니다.
terdon

내가 그거 했어. 당신은 볼 수 있습니다.
user3351523

@ user3351523 왜 듀프 솔루션이 실패했는지 설명하지 않았습니다. 그리고 당신은 당신이받은 답변이 어떻게 실패하는지 설명하지 않았습니다. 당신이 사용해야 할 수도 cp -Hr있지만 OSX cp가 그것을 지원 하는지 모르겠습니다 .
terdon


1

파일에서 직접 읽는 xargs

xargs -l -i < flist  mv -v {} /app/dst

편집 1-아래 @Anthon의 주석 후

xargs -I{} < flist  mv -v {} /app/dst

1
-ideprecrated하고, 또는 교체 -I는 의미입니다 -l/ --max-lines=1. 그리고 mv각 파일마다 별도로 실행됩니다.
Anthon

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.