Comment puis-je utiliser le terminal Linux pour tout copier dans le répertoire actuel à un sous-répertoire?
Si vous souhaitez copier le contenu du dossier de manière récursive (lancera une erreur, des alternatives ci-dessous):
cp -r * sub/
Un peu plus de hacky, mais travaille sur des sous-répertoires non vides:
TARGETDIR='targetdir here';cp -r `find . -maxdepth 1 ! -name "$TARGETDIR"` "$TARGETDIR"
Un autre Onliner:
TARGETDIR='targetdir here';for file in *;do test "$file" != "$TARGETDIR" && cp "$file" "$TARGETDIR/";done
Ou récursif:
TARGETDIR='z';for file in *;do test "$file" != "$TARGETDIR" && cp -r "$file" "$TARGETDIR/";done
Je suggère de déplacer le répertoire cible en dehors du répertoire source, puis de la remettre à nouveau; MV est gratuit (si vous faites attention à ne pas passer à un système de fichiers différent), sauf si vous attendez d'autres processus interférer/être interféré.
La plupart des solutions postées ci-dessus ne fonctionnent pas s'il y a des espaces dans des noms de fichiers. Je suggérerais d'utiliser des variantes de trouver -print0 | Xargs -0, ou trouver -exec, etc.
Cela fonctionnera-t-il pour vous?
cp -r * subdir/
Si vous vouliez vous déplacer au lieu de tout copier dans le directeur actuel vers un sous-répertoire, vous pourriez faire:
mv * subdir/