Comment remplacer la position d'un répertoire contenant des espaces

0

La question

J'ai fait deux pipelines; ce, x="$(ls -1p | grep "/$" | tr -d "/")" obtenez tous les sous-répertoires dans le répertoire de travail, et ce, y="$(ls -1p | grep "/$"| grep \ | tr -d "/")" obtient le sous-répertoires qui contiennent des espaces dans le répertoire de travail.

Alors maintenant, ce que j'ai essayer de faire est de remplacer la position de l'annuaire qui contient des espaces, et le met tout en haut, c'est à dire., disons ci-dessous sont mes sous-répertoires:

Dir1
Dir2
Dir 3

Maintenant Dir 3 va vers le haut:

Dir 3
Dir1
Dir1
for I in $x; do
    for X in $y; do
        if [[ $I == $X ]];then
            sed "/"$X"/d" "$I"
        fi
    done
    echo "$I"
done

Ci-dessus est ma boucle à faire tâche. Il imprime tous les sous-répertoires qui ne contient pas d'espaces, mais l'imprime comme:

Dir1
Dir2
sed: Dir: No such file or directory
Dir
sed: 3: No such file or directory
3

Si quelqu'un peut aider qui sera grandement apprécié.

bash
2021-11-24 00:05:11
2

La meilleure réponse

0

Si vous préférez for la boucle de la find commande, comment à ce sujet:

#!/bin/bash

# 1st loop to print the dirnames containing space character
for d in */; do                         # loops over subdirectories under current directory
    if [[ $d =~ [[:space:]] ]]; then    # if the dirname contains a space character
        echo "${d%/}"                   # then print the name removing the trailing slash
    fi
done

# 2nd loop to print the dirnames without space character
for d in */; do
    if [[ ! $d =~ [[:space:]] ]]; then  # if the dirname does not contain a space character
        echo "${d%/}"
    fi
done

Sortie avec l'exemple fourni:

Dir 3
Dir1
Dir2
2021-11-24 01:45:53
0

L'utilisation de GNU trouver:

find . -mindepth 1 -type d -name '*[[:space:]]*'       # spaces
find . -mindepth 1 -type d -regex '.*/[^/[:space:]]+$' # no spaces

C'est récursive.

2021-11-24 01:57:20

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................