Я играл с mv, и теперь у меня есть ситуация. Раньше, скажем Папка 1 имела файл1,2,3.Как удалить промежуточные папки, содержащие только одну папку?
В настоящее время Folder1 имеет Folder2, у которого есть Folder3, у которого есть Folder4, который содержит file1,2,3.
Я пытаюсь написать сценарий bash таким образом, чтобы он идентифицировал промежуточные папки, содержащие только один каталог, и перемещал все его содержимое на один уровень, в конечном счете отдавая только Folder1-> file1,2,3, и папки отдыха удалялись.
Я пытался написать что-то вроде ниже, но я:
1.unable различать между файлами и папками
2.unable найти имя файла/каталога хранится внутри текущей папки
3. Не уверен, как это сделать рекурсивно.
#!/bin/bash
echo "Directory Name?"
read dir_name
no_files=`ls -A| wc -l`
if [ $no_file==1 ] && [ itisaDirectory()];
then `mv folder_name/* dir_name`
fi
Подсказка: '[-d" $ file "]' будет истинным, если '$ file' является каталогом. – tripleee
В вашем коде уже есть синтаксические ошибки; см. http://shellcheck.net/ для исправлений. (Тем не менее, он не может предупредить о сумасшедших обратных шагах вокруг команды 'mv'.) – tripleee