rm -f test && touch testкроме этого, я действительно не знаю
Kiwy
@Kiwy Да, но я представляю себе встроенную команду, предназначенную для выполнения этой задачи.
Ионика Бизэу
Ответы:
12
Это невозможно для любого Unix или Linux, к которому я когда-либо прикасался.
В некоторых старых версиях Unix каталоги - это файлы, специально помеченные, но все же файлы. catНапример, раньше вы могли читать каталог с помощью SunOS. Многие современные файловые системы могут иметь каталоги в виде деревьев B + или какую-либо другую структуру данных на диске. Таким образом, превращение файла в каталог или наоборот всегда требует удаления и повторного создания с тем же именем.
Интересный. Если никто не придет с решением, я отмечу этот ответ. :-)
Ионикэ Бизэу
5
Нет, такой команды нет, потому что в этом нет абсолютно никакого смысла. Ваш вопрос похож на просьбу о способе преобразования коробки в плоский прямоугольник. Что бы вы сделали с вещами в коробке (каталог)? Как прямоугольник будет соответствовать коробке, из которой он пришел?
Файлы и каталоги выполняют совершенно разные функции. Хотя каталог действительно является файлом в * nix системах, он применяется только к внутренним частям системы, а не к тому, что вы, пользователь, видите. Таким образом, преобразование файла в каталог или наоборот всегда будет включать удаление файла и создание каталога. Лучшее, на что вы могли бы надеяться, это использовать тот же самый инод, но опять же, в этом нет особого смысла.
Сказать, что в этом нет никакого смысла, - это ваше мнение, а не технический факт.
Шридхар Сарнобат
@ user7000 Что бы вы сделали с содержимым каталога, когда вы «конвертируете» в файл?
Тердон
Файловая система хранит данные в древовидной структуре. В компьютерной науке узлы дерева, которые являются листовыми узлами, могут стать внутренними узлами, когда вы добавляете к ним дочерние узлы. И нет, я не собираюсь использовать базу данных, когда файловой системы достаточно.
Шридхар Сарнобат
2
Создайте функцию, чтобы делать то, что вы хотите. ( bashили предположить другую оболочку типа Bourne / POSIX)
Я намеренно использую, rmdirчто не удастся, если adirне является каталогом или не пустой (нет, -fчтобы заставить). touchбудет работать только в случае rmdirуспеха.
Вы можете поместить определение функции в свой файл настройки оболочки ( .bashrcдля bash).
Очевидно ошибка в прошивке перевернула бит в записи каталога для файла, заставляя ОС думать, что это папка, а не файл.
Хотя у меня нет роутера Linksys, что-то изменило все мои файлы .jpg в пустые папки. Если есть какой-то способ перевернуть бит (или что-то еще), который говорит, что запись каталога NTFS - это папка против файла, я бы хотел узнать об этом.
Одно из решений в этом двухлетнем потоке говорило, что если жесткий диск, содержащий папки, которые используются для файлов, подключен к Mac с OS / X, Mac снова увидит их как файлы, и они можно скопировать в папку на Mac. У меня нет Mac, чтобы попробовать это, так что если кто-нибудь знает способ перевернуть бит ...
Сначала получите доступ к терминалу и выполните ls -al fileс файлом, который является файлом, который вы хотите преобразовать обратно в ФАКТИЧЕСКУЮ папку. Если в списке есть файлы и подкаталоги, это означает, что ваш «файл» ранее был папкой с реальным содержимым, и вы можете продолжить:
Выполнение:
sudo chmod 700/
ИЛИ
sudo chmod 700 file
Перезагрузите систему, восстановите доступ к терминалу и выполните:
sudo chmod 744/
ИЛИ
sudo chmod 744 file
ПОМНИТЕ: «файл» должен быть заменен файлом, который вы хотите преобразовать обратно в ФАКТИЧЕСКУЮ папку.
Это просто произвольный способ решения этой проблемы, но он создает аномалии разрешений, которые вы можете использовать fsck -fдля исправления (пока, конечно, не смонтированного) или вручную при необходимости установить новые разрешения.
СНОВА, это просто проверенный способ избежать удаления файла, который ранее был непустой папкой.
rm -f test && touch test
кроме этого, я действительно не знаюОтветы:
Это невозможно для любого Unix или Linux, к которому я когда-либо прикасался.
В некоторых старых версиях Unix каталоги - это файлы, специально помеченные, но все же файлы.
cat
Например, раньше вы могли читать каталог с помощью SunOS. Многие современные файловые системы могут иметь каталоги в виде деревьев B + или какую-либо другую структуру данных на диске. Таким образом, превращение файла в каталог или наоборот всегда требует удаления и повторного создания с тем же именем.источник
Нет, такой команды нет, потому что в этом нет абсолютно никакого смысла. Ваш вопрос похож на просьбу о способе преобразования коробки в плоский прямоугольник. Что бы вы сделали с вещами в коробке (каталог)? Как прямоугольник будет соответствовать коробке, из которой он пришел?
Файлы и каталоги выполняют совершенно разные функции. Хотя каталог действительно является файлом в * nix системах, он применяется только к внутренним частям системы, а не к тому, что вы, пользователь, видите. Таким образом, преобразование файла в каталог или наоборот всегда будет включать удаление файла и создание каталога. Лучшее, на что вы могли бы надеяться, это использовать тот же самый инод, но опять же, в этом нет особого смысла.
источник
Создайте функцию, чтобы делать то, что вы хотите. (
bash
или предположить другую оболочку типа Bourne / POSIX)Я намеренно использую,
rmdir
что не удастся, еслиadir
не является каталогом или не пустой (нет,-f
чтобы заставить).touch
будет работать только в случаеrmdir
успеха.Вы можете поместить определение функции в свой файл настройки оболочки (
.bashrc
дляbash
).источник
--
?--
знаменует конец флагов такrmdir
иtouch
ничего знать прошлое , это имя файла, даже если он начинается с-
.Для тех, кто интересуется, почему вы хотите сделать это, следуйте этой теме:
https://community.linksys.com/t5/Wireless-Routers/Media-files-changing-to-folder-types/td-p/504192/highlight/true
Очевидно ошибка в прошивке перевернула бит в записи каталога для файла, заставляя ОС думать, что это папка, а не файл.
Хотя у меня нет роутера Linksys, что-то изменило все мои файлы .jpg в пустые папки. Если есть какой-то способ перевернуть бит (или что-то еще), который говорит, что запись каталога NTFS - это папка против файла, я бы хотел узнать об этом.
Одно из решений в этом двухлетнем потоке говорило, что если жесткий диск, содержащий папки, которые используются для файлов, подключен к Mac с OS / X, Mac снова увидит их как файлы, и они можно скопировать в папку на Mac. У меня нет Mac, чтобы попробовать это, так что если кто-нибудь знает способ перевернуть бит ...
источник
Сначала получите доступ к терминалу и выполните
ls -al file
с файлом, который является файлом, который вы хотите преобразовать обратно в ФАКТИЧЕСКУЮ папку. Если в списке есть файлы и подкаталоги, это означает, что ваш «файл» ранее был папкой с реальным содержимым, и вы можете продолжить:Выполнение:
ИЛИ
Перезагрузите систему, восстановите доступ к терминалу и выполните:
ИЛИ
ПОМНИТЕ: «файл» должен быть заменен файлом, который вы хотите преобразовать обратно в ФАКТИЧЕСКУЮ папку.
Это просто произвольный способ решения этой проблемы, но он создает аномалии разрешений, которые вы можете использовать
fsck -f
для исправления (пока, конечно, не смонтированного) или вручную при необходимости установить новые разрешения.СНОВА, это просто проверенный способ избежать удаления файла, который ранее был непустой папкой.
источник