открыть ssh сервер обратно [закрыто]

Usandofind

find assets -type d -exec sh -c '
    for n in "$1"/*.png; do
        test -f "$n" && mv "$n" "${n%.png}_old.png"
    done' sh {} ';'

Este comando findbusca directorios en o debajo del directorio assets. Para cada directorio encontrado, ejecuta el siguiente script de shell corto:

for n in "$1"/*.png; do
    test -f "$n" && mv "$n" "${n%.png}_old.png"
done

donde $1se expandirá a la ruta del directorio encontrado. El script iterará sobre todos los nombres de archivo que coincidan con *.pngen el directorio y reemplazará el sufijo de nombre de archivo .pngcon _old.pngusando una sustitución de variable.

El test -fse asegura de que estemos operando en archivos existentes. Esto es necesario porque si una dosis de directorio no contiene archivos que coincidan con*.png(como en los directorios assets, ay a2), entonces ese patrón permanecerá sin expandir en $n.

Alternativamente, y más corto,

find assets -type f -name '*.png' \
    -exec sh -c 'for n; do mv "$n" "${n%.png}_old.png"; done' sh {} +

Pruebas:

$ mkdir -p assets/a{,2}/b{,2,3}
$ touch assets/a{,2}/b{,2,3}/{a,b,c,d}.png
$ tree
.
`-- assets
    |-- a
    |   |-- b
    |   |   |-- a.png
    |   |   |-- b.png
    |   |   |-- c.png
    |   |   `-- d.png
    |   |-- b2
    |   |   |-- a.png
    |   |   |-- b.png
    |   |   |-- c.png
    |   |   `-- d.png
    |   `-- b3
    |       |-- a.png
    |       |-- b.png
    |       |-- c.png
    |       `-- d.png
    `-- a2
        |-- b
        |   |-- a.png
        |   |-- b.png
        |   |-- c.png
        |   `-- d.png
        |-- b2
        |   |-- a.png
        |   |-- b.png
        |   |-- c.png
        |   `-- d.png
        `-- b3
            |-- a.png
            |-- b.png
            |-- c.png
            `-- d.png

9 directories, 24 files

(findcomando ejecutado aquí)

$ tree
.
`-- assets
    |-- a
    |   |-- b
    |   |   |-- a_old.png
    |   |   |-- b_old.png
    |   |   |-- c_old.png
    |   |   `-- d_old.png
    |   |-- b2
    |   |   |-- a_old.png
    |   |   |-- b_old.png
    |   |   |-- c_old.png
    |   |   `-- d_old.png
    |   `-- b3
    |       |-- a_old.png
    |       |-- b_old.png
    |       |-- c_old.png
    |       `-- d_old.png
    `-- a2
        |-- b
        |   |-- a_old.png
        |   |-- b_old.png
        |   |-- c_old.png
        |   `-- d_old.png
        |-- b2
        |   |-- a_old.png
        |   |-- b_old.png
        |   |-- c_old.png
        |   `-- d_old.png
        `-- b3
            |-- a_old.png
            |-- b_old.png
            |-- c_old.png
            `-- d_old.png

9 directories, 24 files
-9
19.05.2015, 18:49
0 ответов

Теги

Похожие вопросы