J'ai essayé d'ouvrir tous mes fichiers .mp3 à partir d'un dossier en utilisant xdg-open
mais j'ai découvert qu'il n'en ouvre qu'un! Alors j'ai cherché un peu mais il n'y avait pas une telle question! J'ai trouvé "evince" mais apparemment, il ouvre des fichiers texte et gnome-open ouvre également un fichier.
Je veux ouvrir tous les fichiers du même format dans un dossier du terminal. Je suis nouveau sur Ubuntu, alors merci d’expliquer un peu plus.
Effectivement. Vous pouvez utiliser Shell pour contourner cela, comme ceci:
ls -b *.mp3 | xargs -n 1 xdg-open
Ou, si vous voulez plus robuste, essayez
find -iname '*.mp3' -print0 | xargs -0 -n 1 xdg-open
Tu peux essayer:
ls *.mp3 | while read -r file; do xdg-open "$file"; done
ls *.mp3
liste tous les fichiers mp3 du répertoire en cours, chacun sur sa propre ligne, et la sortie est dirigée vers une boucle while
qui lira le contenu de chaque ligne et l'ouvrira (ce qui est le nom d’un fichier mp3 dans ce cas) dans son application par défaut.
J'ai écrit un petit script /usr/local/bin/o
, bien que vous puissiez simplement l'appeler /usr/local/bin/xdg-open
et remplacer la commande par défaut si vous le souhaitez (en supposant que votre $PATH
lui donne la priorité). De plus, si aucun argument n’est donné, ce script ouvrira le répertoire en cours.
#!/usr/bin/env bash
if [ $# -eq 0 ]; then
xdg-open . &> /dev/null
else
for file in "$@"; do
xdg-open "$file" &> /dev/null
done
fi
Si vous ne souhaitez pas ouvrir le répertoire en cours sans argument, le comportement par défaut, à savoir l'utilisation, est conservé.
#!/usr/bin/env bash
if [ $# -eq 0 ]; then
xdg-open &> /dev/null
else
for file in "$@"; do
xdg-open "$file" &> /dev/null
done
fi
N.B. Cela ne dépend pas de la capacité du programme par défaut à analyser plusieurs arguments, mais à la place, nous appelons chaque commande une fois pour chaque argument. Je ne pense pas qu'il y ait une manière élégante de contourner cela, car les utilisateurs peuvent vouloir xdg-open
différents types de fichiers, et certaines commandes ne prendront de toute façon pas plusieurs arguments.
J'ai écrit ce script bash
pour couvrir tous les cas d'utilisation auxquels je pouvais penser:
#!/bin/bash
set -euo pipefail; shopt -s failglob # bash strict mode
max=${max:-10} # Set default maximum if $max is not set
[[ ${all:-} ]] && max=$# # Set max to all files if $all is non-null
for file in "${@:1:$max}"; do
xdg-open "$file"
done &>>~/.xsession-errors
Fonctionnalités:
max=20 open $(ls -Q)
all=1 open $(ls -Q)