다음 형식의 파일(ordered_names)이 있습니다.
pub 000.html
pub.19 001.html
약 300줄인데 mv 명령에 입력할 방법을 찾을 수 없습니다.
내가 읽고파일에 저장된 문자열을 명령의 인수 목록으로 제공하시겠습니까?, 하지만 내가 원하는 것을 얻을 수 없습니다.
제가 시도한 몇 가지 사항은 다음과 같습니다.
for line in "$(cat ../ordered_files.reversed)"; do mv $(echo "$line"); done
for line in "$(cat ../ordered_files.reversed)"; do echo mv $(echo $line | cut -d' ' -f 1) $(echo $line | cut -d' ' -f 2) ; done
답변1
노력하다:
while read -r file1 file2; do mv -n -- "$file1" "$file2"; done <inputfile
이는 입력 파일의 각 줄에 대한 파일 이름이 공백으로 구분되어 있다고 가정합니다. 물론 이는 파일 이름 자체에 공백이 포함되지 않은 경우에만 작동합니다. 그렇다면 다른 입력 형식이 필요합니다.
어떻게 작동하나요?
while read -r file1 file2; do
그러면 사이클이 시작됩니다
while
. 입력이 가능한 한 루프는 계속됩니다. 각 입력 라인에 대해 두 개의 매개변수(file1
및 ) 를 읽습니다file2
.mv -n -- "$file1" "$file2"
file1
로 이동합니다file2
.이 옵션을 사용하면
-n
대상 위치에 있는 파일을 덮어쓰는 것을 방지할 수 있습니다. 물론 파일을 덮어쓰려면 이 옵션을 제거하세요.이 문자열은
--
옵션의 끝을 나타냅니다. 파일 이름이-
.done
이것은 주기의 끝을 표시합니다
while
.<inputfile
이는
while
루프가 이름이 지정된 파일에서 입력을 받도록 지시합니다inputfile
.