Bash
查找以相同字元串開頭的文件夾
我在一個文件夾中有 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