mv 명령을 파일 및 디렉터리 이름 목록의 각 줄에 매핑합니다.

mv 명령을 파일 및 디렉터리 이름 목록의 각 줄에 매핑합니다.

두 개의 파일 이름과 디렉토리 이름을 가진 파일이 있습니다. mv파일 이름 파일의 각 줄에 있는 명령을 디렉터리 이름 파일의 각 줄에 매핑하고 싶습니다 . 파일이 작습니다.

도움이 된다면 파일 이름을 순서대로 지정할 수 있습니다(예: f1, f2, f3...f1000). 파일과 디렉토리를 반복하는 방법이 있습니까?

세 가지 사용 사례가 있을 수 있습니다. 하나의 파일을 여러 디렉터리에, 여러 파일을 하나의 디렉터리에, 여러 파일을 여러 디렉터리에(제 경우에는 1개의 파일/라인 = 1개의 디렉터리/라인). 내 사용 사례는 마지막 범주에 속합니다. 일부 사용 사례에서 이것이 사용되는 것을 보았지만 xargs내 사용 사례에 맞게 수정하는 방법을 잘 모르겠습니다.

다음 질문은 도움이 되지 않았습니다.https://stackoverflow.com/questions/11942422/moving-large-number-of-files

답변1

주어진

$ head files dirs
==> files <==
foo
bar
baz

==> dirs <==
foodir
bardir
bazdir

그런 다음 새로운 bash 버전을 사용하십시오.

$ while IFS= read -r -u3 f && IFS= read -r -u4 d; do 
    echo mv "$f" "$d/"
  done 3<files 4<dirs
mv foo foodir/
mv bar bardir/
mv baz bazdir/

또는 GNU를 사용하십시오parallel

$ parallel --xapply echo mv {1} {2}/ :::: files :::: dirs
mv foo foodir/
mv bar bardir/
mv baz bazdir/

관련 정보