파일 이름 목록에서 여러 파일을 새 폴더로 이동

파일 이름 목록에서 여러 파일을 새 폴더로 이동

list.txt에 'abc1.png, abc2.png, abc3.png...'가 포함된 파일 이름 목록이 있습니다.

그러나 파일이 있는 디렉토리를 모릅니다.

txt 파일의 모든 파일을 찾아 새 폴더로 이동하고 싶습니다.

답변1

당신은각 파일 이름을 한 줄씩 읽습니다.그런 다음 옵션 find을 사용하여 시도 name하고 마지막으로 mv대상에 적용합니다.

while IFS= read -r filename; do
    find /somewhere -type f -name "$filename" -exec mv -- {} /somewhere/else/ \;
done < file.txt

은(는) {}발견된 파일 경로로 대체됩니다.

답변2

파일 이름에 "," 또는 개행 문자가 포함되어 있지 않고 모든 파일이 list.txt에 한 번만 존재한다고 가정합니다. 또한 자연스럽게 newdirectory를 원하는 디렉토리로 변경해야 합니다. list.txt에 파일이 누락된 경우 해당 파일은 복사되지 않습니다(정보도 제공되지 않음).

sed -s "s/, /\\n/g" list.txt | xargs -IFILE -n1 find -name FILE -exec mv {} newdirectory \;

답변3

bash를 사용하면 쉽습니다.

먼저 find로 파일을 찾고 다른 파일에서 출력을 리디렉션하십시오.

$(cat list.txt)의 인수에 대해; / -name $arg -print >> files_with_path.txt를 찾으세요; 완료

그런 다음 파일을 mv하십시오.

$(cat files_with_path.txt)의 인수에 대해; do mv $arg /your/dest/folder; 완료

관련 정보