텍스트 파일을 읽고 해당 파일만 다른 폴더로 이동하세요.

텍스트 파일을 읽고 해당 파일만 다른 폴더로 이동하세요.

100개의 로그 파일이 있는 폴더가 있는데 그 중 일부는 데이터가 있고 일부는 데이터가 없습니다. 데이터가 있는 파일을 선택하고 "goodfiles.txt"라는 텍스트 파일에 이름을 저장하는 스크립트가 있습니다. 텍스트 파일의 파일을 읽고 다른 폴더로 이동하는 방법을 알고 싶습니다. 나는 이것을 시도했지만
cat /root/testing2/goodfiles.txt | xargs mv -f /root/testing2/moved/
다음과 같은 오류가 발생했습니다.


mv: 대상(log1508.log) 은 mv: 디렉터리 또는 파일을 이동할 디렉터리여야 합니다 .

누구든지 나를 도와줄 수 있나요?

답변1

다음은 약간 다르지만 개념적으로는 간단한 접근 방식입니다(파이프 제외).

for fileName in `cat goodfiles.txt`; do mv $fileName /root/testing2/moved/; done

답변2

--replace 옵션을 사용하여 xargs가 대체하는 부분을 변경하고 대체 문자열을 지정할 수 있다는 점을 기억하는 것이 도움이 된다고 생각합니다. 그렇지 않으면 줄을 끝에 추가합니다.

나는 거의 같은 일을 할 수 있었다

cat filelist |xargs --replace='{}' mv {} ./targetdir/

어쩌면 시도해 볼 수도 있습니다.

cat /root/testing2/goodfiles.txt |xargs --replace '{}' /root/testing2/moved

답변3

여러 소스를 단일 대상으로 이동하기 위해 정확히 원하는 옵션 과 -fGNU 옵션을 혼동 하고 있는 것 같습니다 .mv-txargs

   mv [OPTION]... -t DIRECTORY SOURCE...

plain은 xargs입력을 공백으로 구분된 인수로 나누므로 파일 이름에 공백이 포함되어 있으면 명령이 중단됩니다. 동시에 그것은 또한우루무치대학교.

그래서

xargs -d'\n' mv -t /root/testing2/moved/ </root/testing2/goodfiles.txt

관련 정보