2015-04-08 46 views
-1

我有一個文件夾系統,它有2個深度的子文件夾。每個文件夾都有一些.docx文件和其他文件。將全部.docx文件轉換爲.odt文件夾系統,然後刪除所有.docx文件

我需要做的是,我想將所有這些.docx文件轉換成.odt文件,之後我想刪除這些舊的.docx文件以消除重複。

我得到了bash命令Linux Command to convert .docx to .odt,但是爲了運行這個命令,我必須在通過終端存在.docx文件的文件夾中。

所以我正在尋找1自動執行此操作的Linux命令或shell文件腳本。

在此先感謝。

+0

看看在'find',它的選項是'-exec command \;'。 – Cyrus

+0

@Cyrus thnxx這將幫助我轉換文件夾系統內的所有文件,但如何刪除舊的重複文件。 –

回答

0

如果您使用zshbash version 5.0 or higher,這是微不足道的:

#!/bin/zsh 
cd $1 && libreoffice --headless --convert-to odt **/*.docx 

對於任何SH-像貝殼,你也可以做使用下面的管道是:

#!/bin/sh 
find $1 -name '*.docx' -print | xargs libreoffice --headless --convert-to odt 
cd $1 && find $1 -name '*.docx' -delete 
+0

['globstar'](http://unix.stackexchange.com/questions/49913/recursive-glob)「選項爲'**/*。docx'也可以在bash(版本> = 4.x)中使用組。 – anishsane

+0

我顯然不使用bash,將編輯我的答案反映,在大多數(非Linux)Unix系統上找到的純/ bin/sh根本沒有做任何調整。 – hd1

+0

@ hd1 thanx爲您精彩的努力。但是當我執行你的命令時,它會在相應的文件夾中創建.odt文件,並且還會在文件夾外創建.odt文件,並且不會從文件夾內刪除.docx文件。 (例如我的文件夾系統是「uploads - >文件夾A - > .docx文件」,所以在文件夾A中有5個.docx文件,所以我在uploads文件夾中執行命令,並在輸出文件中創建5個.odt文件和一個文件夾中的10個文件,其中5個.odt和5個.docx文件夾) –