저는 리눅스를 처음 접했습니다. Linux에는 터미널을 통해 파일 형식을 변환하는 몇 가지 방법이 있다는 것을 알고 있습니다. 그러나 다음을 달성할 수 있는 방법이 있습니까?
3개의 폴더가 있고 이 폴더 안에 15개의 폴더가 더 있습니다. 각 폴더에는 .xls 형식의 파일 12개와 기타 .R 파일 및 pdf 파일이 있습니다. 모든 .xls를 .xlsx 형식으로 변환하여 이 3개 폴더의 정확한 복사본을 만드는 방법이 있습니까?
다음 내용이 너무 현실적이지 않은 경우 폴더의 모든 .xls 파일을 .xlsx 파일 형식으로 변환하려면 어떻게 해야 합니까? 그러면 위의 내용을 복사할 수 있습니다.
참고: 저는 LibreOffice가 없고 WPS를 사용합니다. 다음에 LibreOffice가 필요한 경우 필요에 따라 설치할 수 있습니다.
답변1
이것은 필요할 것이다libreoffice
이 스택 오버플로 질문에서xls 파일을 xlsx 파일로 변환하는 Unix 명령은 무엇입니까?:
libreoffice --convert-to xlsx my.xls --headless
이 --convert-to
옵션 은 --headless
(위의 SO 답변이 2014년에 작성되었을 때 Libreoffice 버전 4.2.3에서는 사용할 수 없었지만 이후적어도Libreoffice 6은 2018년에 출시될 예정이며 아마도 그보다 더 길어질 것입니다). 이것을 명령줄에 추가해도 아무런 해가 없지만 필수는 아닙니다.
find
그런 다음 이를 명령 에 통합할 수 있습니다 .
find . -type f -name "*.xls" -exec libreoffice --convert-to xlsx {} \;
이 명령은 현재 디렉터리에서 이름이 로 끝나는 파일을 찾고 .xls
파일 이름으로 대체된 명령을 실행합니다.{}
프리랜서 회사원상태:
--convert-to output_file_extension[:output_filter_name] [--outdir output_dir] file...
파일을 일괄 변환합니다. 지정하지 않으면
--outdir
현재 작업 디렉터리가 변환된 파일의 출력 디렉터리로 사용됩니다. 이것은 의미한다--headless
예:
--convert-to pdf *.doc
모든 .doc 파일을 PDF로 변환하세요.
--convert-to pdf:writer_pdf_Export --outdir /home/user *.doc
Writer PDF 내보내기 대화 상자의 설정을 사용하여 모든 .doc 파일을 PDF로 변환하고 /home/user에 저장합니다.
@cas님의 댓글입니다.
libreoffice는 여러 파일 이름 인수를 사용할 수 있으므로(맨 페이지의 예에서 이를 보여줍니다) find로 실행하는 것이 더 빠릅니다. -type f -name '*.xls' -exec libreoffice --convert-to xlsx {} + - 각 파일에 대해 한 번이 아니라 libreoffice를 한 번만 실행하면 됩니다.
find . -type f -name '*.xls' -exec libreoffice --convert-to xlsx {} +
답변2
MacOS에서 작동하도록 @Nicolas의 답변을 약간 수정했습니다. "libreoffice" 명령이 셸에 대해 정의되지 않았을 수 있으므로 libreoffice 바이너리를 가리켜야 합니다. 내 경우에는 다음과 같았습니다.
find . -type f -name "*.xls" -exec /Applications/LibreOffice.app/Contents/MacOS/soffice --convert-to xlsx {} \;