2016-06-02 12 views
2

Ich möchte Dateien im Verzeichnisbaum finden und drucken, die den Sname-Namen als ihre Verzeichnisse haben. so weitBash Find Funktion Ubuntu - Finden Sie im Verzeichnisbaum, Dateien, die den gleichen Namen wie ihr Verzeichnis haben

Dies ist mein Code:

#!bin/bash 
if [ $# -eq 0 ] 
then 
    echo "No args" 
fi 

if [[ -d $1 ]] #if its dir 
then 
    find $1 -type f | (while read var1 #for every regular file in dir tree 
     do 

     if [[ -f $var1 ]] 
     then 
      echo $var1 #full path 
      # I dont know how to get the dir name 
      echo $(basename $var1) #file name 
      echo 

#then compare it and print full path 
     fi 
    done) 
fi 

Ich möchte diese mit FIND Funktion in bash linux tun.

Dank
+0

FWIW, finden ist keine Funktion, es ist ein externer Befehl, in der Regel unter '/ usr/bin/find' platziert; (es sei denn, Sie definieren eine Funktion mit diesem Namen.) – anishsane

Antwort

3

Sie können dieses Skript verwenden, um mit find:

while IFS= read -rd '' f; do 
    d="${f%/*}" 
    [[ ${d##*/} == ${f##*/} ]] && echo "$f" 
done < <(find . -type f -print0) 
+0

Seufzer! 'find -path' sollte Regex + Backreference-Mechanismus haben ... – anishsane