вы используете широковещательную рассылку (bcast )для разрешения имени, но ваши машины находятся в другой подсети.
Разрешение широковещательного имени работает только в той же подсети.
вы должны добавить запись в свой /etc/hosts
на хвостовом хосте, которая говорит:
192.168.178.31 hostnameofthesmbserver
вы можете сделать это с помощью этой команды:
sudo nano /etc/hosts
Всегда проверяйте этот файл при перезагрузке, потому что я не думаю, что хвост сохранит это изменение.
РЕДАКТИРОВАТЬ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
не пусто.
Кажется, что вы просто хотите изменить имена нескольких каталогов:
mv test/third2/sec2 test/third2/third2
mv test/third2 test/sec2
Глядя на ваше текущее состояние и желаемое состояние. Вам нужно сделать:
mv -T test/third2 test/sec2
mv -T test/sec2/sec2 test/sec2/third2