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; 완료