Je suis sur le chemin:
/myuser/downloads/
Et je crée un sous-dossier:
/myuser/downloads/new
Maintenant, je veux déplacer tous les fichiers et dossiers / sous-dossiers du dossier de téléchargement vers le sous-dossier.
Comment puis-je faire ceci?
J'ai essayé:
mv -R *.* new/
Mais le mouvement ne prend pas le commutateur -R semble-t-il.
mv * new
si, il va gémir "ne peut pas changer de nouveau" ou quelque chose de similaire. Peut-êtremv -i * new
pour vous empêcher les écrasements.Réponses:
La commande
devrait faire l'affaire. Si cela ne fonctionne pas, lancez d'
shopt -s extglob
abord.Pour déplacer également les fichiers / répertoires cachés (commençant par un point), lancez-le également en
shopt -s dotglob
premier.Pour résumer:
(il est toujours préférable de se désinstaller
dotglob
pour éviter les mauvaises surprises).la source
!(something)
?dev
vers mon emplacement actuel, dois-je exécutermv !(dev) dev
? Je reçois-bash: !: event not found
setopt extendedglob
pour définir le mode étendu étendu dans zsh.^
est le symbole d'exclusion, alorsmv ^new new
ferait l'affaire. ensuite, pour voir toutes les options définies dans zsh, vous pouvez utilisersetopt
et pour désactiver le mode global étendu, vous pouvez le faireunsetopt extendedglob
J'ai trouvé quelque chose comme ça mais il est un peu plus simple à comprendre et cela pourrait bien fonctionner pour vous aussi:
Ajouter une explication à la solution ci-dessus:
À partir des pages de manuel:
mv -t
grep -v
Expliqué par étape:
ls
listera les fichiers dans le répertoire courantgrep -v new
reviendra canalisé à qui ne correspond pas à nouveauxargs mv -t new
déplacera les fichiers qui y sont dirigés dugrep -v
répertoire ciblela source
mv: illegal option -- t
. Est-ce parce que j'utilisezsh
?mv
(ce qui signifie que votre version de mv est différente de ce que j'utilisais) qu'est-ce que vous utilisez? Je crois que lorsque je l' ai écrit cette réponse que j'étais sur distro linux encentos
utilisantbash
.mv: illegal option -- t
car mv n’a pas d’-t
option.zsh
, alors c'est probablement le système d'exploitation alors…? Merci de clarifier!Idée simple. En supposant que vous êtes dans / myuser , renommer téléchargements à nouveau , créez un nouveau téléchargements répertoire puis déplacez nouveau en elle.
la source
Si vous souhaitez déplacer tous les fichiers d'un dossier vers l'un de ses sous-dossiers, vous pouvez utiliser la commande suivante:
Il trouvera tous les fichiers et les déplacera ensuite dans votre sous-dossier.
@waltinator: ajouté
-type d -name 'new' -prune
pour empêcher la traversée de/myuser/downloads/new
.la source
new
et essayé cette commande, je reçoismv: missing file operand
etTry 'mv --help' for more information
Vous pouvez essayer ce processus alternatif –– rester dans le chemin
mais, au lieu de créer d' abord le
/myuser/downloads/new/
répertoire, au lieu de créer un dossier dans le/myuser/
répertoire, avec la commandemkdir ../new
, puis déplacez tous les fichiersdownloads
ànew
, et enfin passernew
dansdownloads
. Vous pouvez le faire en une seule ligne, tandis que dans le/myuser/downloads/
chemin, avec la commande:Dans ce cas, vous n'avez pas à vous soucier de toute sorte de « filtrage » des fichiers / dossiers, depuis
new
est sur le même niveau du chemin quedownloads
, de sorte que vous pouvez simplement déplacer toutdownloads
ànew
, puis se déplacernew
dans downloads`.Cependant, si vous avez déjà
new
créé le sous-dossier et que vous ne voulez pas en créer un autre, ne vous inquiétez pas - changez simplement lamkdir
commande située à gauche du premier&&
de la commande ci-dessus en unemv
commande, en poussantnew
vers le haut. chemin; en d'autres termes, pendant que vous êtes toujours dans/myuser/downloads/
, vous pouvez changermkdir ../new
pourmv new ..
. Ensuite, le sous-dossiernew
[dans le chemin/myuser/downloads/new/
] est poussé jusqu'à/myuser/new/
, au même niveau que/myuser/downloads/
, et vous pouvez ensuite exécuter le reste de la commande comme indiqué ci-dessus. Tous ensemble, nous avons, à partir du chemin/myuser/downloads/
:et puisque vous vouliez "déplacer tous les fichiers et dossiers / sous-dossiers du dossier de téléchargement vers le sous-dossier [
new
]", vous avez terminé! Si vous vouliez déplacer uniquement des fichiers (ou uniquement des dossiers ou [insérer un mouvement d'objet plus granulaire]), vous devrez alors utiliser d'autres commandes permettant de "filtrer" les objets, telles quegrep
. Les commandes écrites ci-dessus sont cependant suffisantes.la source