find . -type f -print
imprime
./file1
./file2
./file3
N'importe quelle façon de le faire imprimer
file1
file2
file3
?
f=`find . -name migration`; echo ${f/.\//}
find . -type f -print
imprime
./file1
./file2
./file3
N'importe quelle façon de le faire imprimer
file1
file2
file3
?
f=`find . -name migration`; echo ${f/.\//}
Réponses:
S'ils sont uniquement dans le répertoire courant
find * -type f -print
Est-ce que c'est ce que tu veux?
-printnécessaire? Il a donné le même résultat sans ce drapeau.
Recherchez uniquement les fichiers normaux dans le répertoire courant et imprimez-les sans le ./préfixe " ":
find -type f -printf '%P\n'
De l'homme trouver, description du -printfformat:
% P Nom du fichier avec le nom de l'argument de ligne de commande sous lequel il a été trouvé supprimé.
findprend en charge -printf(pas tous).
\0place de \nsi vous souhaitez le xargs -0find -type f -printf '%P\0' | xargs -0 head
brew install findutils;)
Utiliser sed
find . | sed "s|^\./||"
find -exec?
find -exec sh -c "echo {} | sed 's|^\./||'" \; ou find -exec sh -c "sed 's|^\./||' <<< '{}'" \;
ça peut être plus court
find * -type f
2> /dev/nullignorer l'erreur signalée lorsque la commande est exécutée dans un répertoire vide.
Une autre façon de décaper le ./
find * -type d -maxdepth 0
Puisque l' -printfoption n'est pas disponible sur OSX, findvoici une commande qui fonctionne sur OSX find, juste au cas où quelqu'un ne voudrait pas installer en gnu findutilisant brewetc:
find . -type f -execdir printf '%s\n' {} +
find . -type f -exec bash -c 'for f; do echo "${f#./}"; done' {} +
-exec /path/to/myscript.sh {}dans votrefind, le-printf '%P\n'ne fonctionne pas. Au lieu de cela, je dois faire le./préfixe à l'intérieur du script par:p=${1#"./"}