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?
-print
né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 -printf
format:
% P Nom du fichier avec le nom de l'argument de ligne de commande sous lequel il a été trouvé supprimé.
find
prend en charge -printf
(pas tous).
\0
place de \n
si vous souhaitez le xargs -0
find -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/null
ignorer 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' -printf
option n'est pas disponible sur OSX, find
voici une commande qui fonctionne sur OSX find, juste au cas où quelqu'un ne voudrait pas installer en gnu find
utilisant brew
etc:
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#"./"}