使用find和exec選項。
$ find /path/to/dir -exec <command here> \;
每個文件或目錄都可以使用{}
獲取。
用法示例:$ find . -exec echo {} \;
,這將在當前目錄中遞歸地回顯每個文件名或目錄名。您可以使用一些其他選項來進一步指定想要處理的所需文件和目錄。我將簡要解釋其中的一些。請注意,echo是多餘的,因爲find的輸出會自動打印,但我會留下來說明exec的工作。這是說,下面的命令產生相同的結果:$ find . -exec echo {} \;
和$ find .
MAXDEPTH和mindepth 指定MAXDEPTH和mindepth讓你深下去的目錄結構,只要你喜歡。 Maxdepth確定find
將進入目錄的次數,mindepth決定在選擇文件或目錄之前應該輸入目錄的次數。
示例用法: (1)僅列出此目錄中的元素,包括。 (=當前目錄)。 (2)僅列出當前目錄排除的元素。 從根目錄(3)列出的元件和所有顯示目錄在這個目錄
(1)$ find . -maxdepth 1 -exec echo {} \;
(2)$ find . -mindepth 1 -maxdepth 1 -exec echo {} \;
# or, alternatively
(2)$ find . ! -path . -maxdepth 1 -exec echo {} \;
(3)$ find/-maxdepth 2 -exec echo {} \;
類型 指定類型選項可以過濾的文件或僅目錄,例如使用: (1)列表中的所有文件中這個目錄 (2)在根目錄中的每個目錄上調用shell腳本函數func
。
(1)$ find . -maxdepth 1 -type f -exec echo {} \;
(2)$ find/-maxdepth 1 -type d -exec func {} \;
名&正則表達式 名稱選項,您可以搜索特定的文件名,你也可以看看使用正則表達式格式的文件,並顯示目錄。
實例:找到某個目錄
$ find /path/to/dir -maxdepth 1 -regextype sed -regex ".*\.\(avi\|mp4\|mkv\)"
大小 另一個過濾器是文件大小的任何文件或目錄大於該值將被返回的所有電影。用法示例: (1)查找當前目錄中的所有空文件。 (2)找到當前目錄中的所有非空文件。
(1)$ find . -maxdepth 1 -type f -size 0
(2)$ find . -maxdepth 1 -type f ! -size 0
進一步的例子 移動這個目錄中的所有文件到一個目錄tmp
出現在.
$ find . -type f -maxdepth 1 -exec mv {} tmp \;
轉換所有的MKV文件的MP4文件在目錄/路徑/到/目錄和兒童目錄
$ find /path/to/dir -maxdepth 2 -regextype sed -regex ".*\.mkv" -exec ffmpeg -i {} -o {}.mp4 \;
將所有jpeg文件轉換爲png(不要這樣做,它會花費很長時間都能找到並轉換它們)。
$ find ~ -maxdepth 420 -regextype sed -regex '.*\.jpeg' -exec mogrify -format png {} \;
注 的find
命令是一個強有力的工具,它可以被證明是卓有成效到管道輸出到xargs
。需要注意的是這種方法優於以下的建設是非常重要的:
for file in $(ls)
do
some commands
done,
,因爲後者將處理包含空格的方式不對文件和目錄。
我該如何轉換這個目錄是作爲參數而不是硬編碼給出的?美元符號替換是否夠了? –