переместить или скопировать каталог в его подкаталог

вы используете широковещательную рассылку (bcast )для разрешения имени, но ваши машины находятся в другой подсети.

Разрешение широковещательного имени работает только в той же подсети.

вы должны добавить запись в свой /etc/hostsна хвостовом хосте, которая говорит:

192.168.178.31    hostnameofthesmbserver

вы можете сделать это с помощью этой команды:

sudo nano /etc/hosts

Всегда проверяйте этот файл при перезагрузке, потому что я не думаю, что хвост сохранит это изменение.

1
18.04.2020, 12:30
3 ответа

РЕДАКТИРОВАТЬ2:После вашего последнего обновления это теперь очень специфический случай. И есть много способов решить эту проблему, вот простой, очень конкретный:

#!/bin/bash
#cd songs/

for folder in */*/ ; # list all subfolders of current folder
do
    song=$(dirname "$folder") # extract song
    year=$(basename "$folder") # and year
    if [ ! -d "$year" ]; then #check if year folder exists
        mkdir "$year" #if not, create it
    fi
    mv "$folder" "$year/$song" #move and rename subfolder
    rmdir "$song" #will throw error if not empty, it's dirty but quick
done

РЕДАКТИРОВАТЬ 1:Из вашего обновления я, кажется, понял, что вместо этого вы хотите переименовать папки? В этом случае вам просто нужно обновить этот раздел:

        for i in *; do
            if [ -d "$i" ]; then
                echo "dir $i"
                mv "$i" "$f"
                cd -
                mv "$f" "$i"
            fi

Оригинал

Сначала вы не можете переместить каталог в его подкаталог, что тогда будет родителем этого подкаталога?

вам потребуется mv sec2 для родительского, а затем rmdirдля третьего2.

#!/bin/bash

for f in *; do
    if [ -d "$f" ]; then
        cd "$f"
        echo "cd dir $f"
        for i in *; do
            if [ -d "$i" ]; then
                echo "dir $i"
                mv "$i" ".."
                cd -
                rmdir "$f"
            fi
        done
    fi
done

Это вызовет ошибку, если $fне пусто.

1
19.03.2021, 02:28

Кажется, что вы просто хотите изменить имена нескольких каталогов:

mv test/third2/sec2 test/third2/third2
mv test/third2 test/sec2
3
19.03.2021, 02:28

Глядя на ваше текущее состояние и желаемое состояние. Вам нужно сделать:

mv -T test/third2 test/sec2
mv -T test/sec2/sec2 test/sec2/third2
0
19.03.2021, 02:28

Теги

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