mv: невозможно перезаписать каталог с помощью non-directory
можно ли обойти эту проблему?
у меня есть ситуация, когда мне нужно переместить некоторые файлы в 1 каталог ниже.
/a/b/c/d/e/f/g
проблема в том, что имя файла внутри g/
каталог совпадает с именем каталога
и я получаю следующую ошибку:
mv: cannot overwrite directory `../297534' with non-directory
пример: / home / user/data/doc/version/3766 / 297534-это каталог, внутри которого также есть файл с именем 297534
поэтому мне нужно переместите этот файл внутрь /home/user/data/doc/version / 3766
команда Это то, что я запускаю: (в цикле for)
cd /home/user/data/doc/version/3766/297534
mv * ../
2 ответов
вы не можете заставить mv перезаписать каталог с файлом с тем же именем. Вам нужно будет удалить этот файл, прежде чем использовать команду mv.
добавьте еще один слой в цикл.
заменить mv * ../
С
for f in `ls`; do rm -rf ../$f; mv $f ..; done
Это гарантирует, что любой конфликт будет удален первым, предполагая, что вы не заботитесь о каталоге, который вы перезаписываете.
обратите внимание, что это будет взорвать, если у вас есть файл внутри текущего каталога, который соответствует имени текущего каталога. Например, если вы находитесь в /home/user/data/doc/version/3766/297534
и вы пытаетесь переместить каталог с именем 297534
вверх. Один обходной путь к этому-добавить длинный суффикс к каждому файлу, поэтому мало шансов на совпадение
for f in `ls`; do mv $f ../${f}_abcdefg; done