Cómo reemplazar la posición de un directorio que contiene espacios

0

Pregunta

He hecho dos tuberías; este, x="$(ls -1p | grep "/$" | tr -d "/")" obtener todos los subdirectorios del directorio de trabajo, y esto, y="$(ls -1p | grep "/$"| grep \ | tr -d "/")" obtiene el sub directorios que contienen espacios en el directorio de trabajo.

Así que ahora lo que he tratado de hacer es reemplazar la posición del directorio que contiene los espacios y la coloca en la parte superior, es decir, decir a continuación son mis sub dirs:

Dir1
Dir2
Dir 3

Ahora Dir 3 va a la parte superior:

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

De arriba es mi bucle para hacer esa tarea. Imprime todos los sub dirs que no contenga espacios en blanco, pero las impresiones como:

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

Si alguien puede ayudar que será muy apreciada.

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

Mejor respuesta

0

Si usted prefiere for bucle a la find comando, cómo acerca de:

#!/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

Salida con el ejemplo:

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

El uso de GNU encontrar:

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

Este es recursiva.

2021-11-24 01:57:20

En otros idiomas

Esta página está en otros idiomas

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