Bash

查找以相同字元串開頭的文件夾

  • July 4, 2016

我在一個文件夾中有 1000 多個子目錄。其中一些以相同的字元串開頭,我想查找其名稱的前 5 個字元也是另一個目錄的前 5 個字元的所有目錄。

我不想搜尋特定的字元串,我需要一種讀取第一個子目錄名稱並將其與其他子目錄名稱的前 5 個字元進行比較的方法。然後我需要對第二個子目錄等重複該過程。

找到的所有此類名稱都應寫入文本文件。

下面的命令將做你所追求的。

find . -maxdepth 1 -type d | sort | uniq -D -w 7

find列出目前目錄中的所有目錄,過濾它們(sort使用的先決條件uniq),然後使用uniq列印所有重複項,僅使用前 7 個字元進行比較。我們使用 7 個字元而不是 5 個字元,因為前 2 個字元將是./.

您可以使用參數擴展來檢查字元串的前 5 個字元。

只需循環排序的目錄名。具有相同前綴的目錄在這樣的列表中應該是相鄰的。

$keep包含具有不同前綴的第一個目錄,$printed是一個標誌,如果有多個具有相同前綴的目錄,則可以防止$keep多次列印。

#! /bin/bash
printed=0
keep=''
for dir in */ ; do
   if [[ ${dir:0:5} == ${keep:0:5} ]] ; then
       if ((!printed)) ; then
           echo "$keep"
           printed=1
       fi
       echo "$dir"
   else
       printed=0
       keep=$dir
   fi
done

引用自:https://unix.stackexchange.com/questions/293593