Utiliser Bash
Disons donc que j'ai un tas de fichiers placés au hasard dans un répertoire parent ~/src
, je veux récupérer tous les fichiers correspondant à un certain suffixe et les déplacer (ou les copier) dans un ~/dist
répertoire.
Supposons à cet effet que tous les noms de fichiers ont cette convention de dénomination:
<filename_prefix>.<filename_suffix>
J'ai découvert que c'était un moyen rapide d'obtenir tous les fichiers avec un particulier filename_suffix
et de les mettre dans un dossier dist:
mkdir ~/dst
find source -name "*.xxx" -exec mv -i {} -t ~/dst \;
Maintenant, un pas de plus ... comment puis-je utiliser la sortie de find, dans ce cas filename
, et utiliser le filename_prefix
pour générer un répertoire du même nom ~/dist
, puis déplacer (ou copier) tous les fichiers avec ce préfixe dans le répertoire approprié?
mkdir ~/dst
find source -name "*.xrt,*.ini,*.moo" -exec mv -i {} -t ~/dst \;
Essentiellement, comment puis-je changer la commande ci-dessus (ou peut-être utiliser une autre commande), pour créer une structure comme celle-ci
(PRODUCTION)
~/dist/people/people.xrt
~/dist/games/games.xrt
~/dist/games/games.moo
~/dist/games/games.ini
~/dist/monkeys/monkeys.ini
~/dist/monkeys/monkeys.xrt
à partir d'une arborescence de répertoires comme celle-ci?
(CONTRIBUTION)
~/src/xrt/people.xrt
~/src/xrt/games.xrt
~/src/conf/games.ini
~/src/pack/monkeys.xrt
~/src/e344/games.moo
~/src/e344/monkeys.moo
~/src/en-us/monkeys.ini
la source
shopt -s globstar
, voir ma modification. S'il n'y a que deux niveaux, vous pouvez utiliser*/*.*
et l'extrait de code fonctionnera dans n'importe quel shell.tricher trouver la ligne de commande:
en fait une solution pour appeler le script bash dans find LOL.
= P
la source
happy rm -rf /
! Ce type de code mérite un -1.Yay" rm -rf / "Rox0r.avi
, là encore il y a comme un problème…-exec bash -c 'command which uses "$1"' bash '{}' ';'
. Eh bien, c'est tout à fait inutile de toute façon.