디렉토리를 파일로 또는 파일을 디렉토리로 변환


15

라는 파일을 만들고 싶었습니다 test. 실수로 나는 mkdir test대신 실행 합니다 touch test.

test파일 이름 으로 디렉토리 를 변환 할 수 test있습니까?

test이름이 같은 디렉토리로 이름이 지정된 파일을 변환하는 것은 어떻습니까?


5
rm -f test && touch test이것을 제외하면, 나는 정말로 모른다
Kiwy

@ Kiwy 그래,하지만이 작업을 수행하도록 설계된 내장 명령을 상상하고 있습니다.
Ionică Bizău

답변:


12

내가 만지는 유닉스 나 리눅스에서는 불가능하다.

일부 오래된 유닉스에서 디렉토리는 파일이지만 특별히 표시되었지만 여전히 파일입니다. cat예를 들어 SunOS에서 디렉토리를 읽을 수있었습니다 . 많은 최신 파일 시스템에는 B + 트리 또는 다른 온 디스크 데이터 구조와 같은 디렉토리가있을 수 있습니다. 따라서 파일을 디렉토리로 또는 그 반대로 전환하려면 항상 동일한 이름을 가진 삭제 및 재 작성이 필요합니다.


1
흥미 롭군 아무도 해결책을 찾지 못하면이 답변을 표시합니다. :-)
Ionică Bizău

5

아무런 명령도 없기 때문에 그러한 명령은 없습니다. 귀하의 질문은 상자를 평평한 사각형으로 변환하는 방법을 묻는 것과 같습니다. 상자 (디렉토리)의 내용으로 무엇을 하시겠습니까? 사각형이 원래 상자와 어떻게 일치합니까?

파일과 디렉토리는 완전히 다른 기능을합니다. 디렉토리 는 실제로 * nix 시스템 의 파일 이지만, 시스템의 내부에만 적용되며 사용자는 볼 수 없습니다. 따라서 파일을 디렉토리로 변환하거나 그 반대로 변환하려면 항상 파일을 삭제하고 디렉토리를 작성해야합니다. 당신이 기대할 수있는 최선은 동일한 inode를 사용하는 것이지만 다시는 중요하지 않습니다.


아무 의미가 없다고 말하는 것은 당신의 의견 일뿐, 사실적인 사실은 아닙니다.
Sridhar Sarnobat

@ user7000 파일로 "변환"할 때 디렉토리의 내용으로 무엇을 하시겠습니까?
terdon

파일 시스템은 데이터를 트리 구조로 저장합니다. 컴퓨터 과학에서 리프 노드 인 트리 노드는 하위 노드를 추가 할 때 내부 노드가 될 수 있습니다. 그리고 파일 시스템이 충분할 때 데이터베이스를 사용하지 않을 것입니다.
Sridhar Sarnobat

2

원하는 기능을 수행하십시오. ( bash또는 쉘과 같은 다른 Bourne / POSIX)

$ dir2file() { rmdir -- "$1" && touch -- "$1";}
$ mkdir adir
$ dir2file adir
$ ls -l adir
-rw-r--r-- 1 xtian xtian 0 2014-03-04 14:59 adir
$ 

디렉토리가 아니거나 비어 있지 않은 경우 강제로 rmdir실패하는 의도적으로 사용 합니다. 성공한 경우에만 실행됩니다 .adir-ftouchrmdir

함수 정의를 쉘 사용자 정의 파일 ( .bashrcfor bash) 에 넣을 수 있습니다 .


@Stephane Chazelas 무엇을 --합니까?
X Tian

2
--마크 그래서 플래그의 말 rmdir과는 touch그것이 파일 이름입니다 과거는 시작하더라도 아는 -.
Kevin

2

왜 이것을하고 싶을 지 궁금해하는 사람들에게는이 스레드를 따르십시오.

https://community.linksys.com/t5/Wireless-Routers/Media-files-changing-to-folder-types/td-p/504192/highlight/true

분명히 펌웨어의 버그가 파일의 디렉토리 항목에서 비트를 뒤집어 OS가 파일 대신 폴더라고 생각하게했습니다.

나는 문제의 링크시스 라우터를 가지고 있지 않지만, 뭔가 빈 폴더에 내 모든 .JPG 파일을 변경했습니다. NTFS 디렉토리 항목이 폴더 대 파일이라고 말하는 비트 (또는 기타)를 뒤집을 방법이 있다면 그것에 대해 알고 싶습니다.

2 년짜리 스레드의 솔루션 중 하나는 파일에 사용되는 폴더가 들어있는 하드 드라이브가 OS / X를 실행하는 Mac에 연결되어 있으면 Mac에서 해당 파일을 다시 파일로보고 Mac의 폴더로 복사 할 수 있습니다. 나는 그것을 시험해 볼 Mac이 없기 때문에 누군가가 비트를 뒤집을 수있는 방법을 알고 있다면 ...


1

첫째, 게인 터미널에 대한 접근 및 실행 ls -al file파일 이 실제 폴더로 다시 변환 할 파일 인. 파일과 하위 디렉토리가 나열된 경우 "파일"이 이전에 실제 컨텐츠가있는 폴더였으며 계속 진행할 수 있습니다.

실행 :

sudo chmod 700 /

또는

sudo chmod 700 file

시스템을 다시 시작하고 터미널 액세스 권한을 다시 얻은 후 다음을 실행하십시오.

sudo chmod 744 /

또는

sudo chmod 744 file

기억하십시오 : "file"은 ACTUAL 폴더로 다시 변환하려는 파일로 바꿔야합니다.

이것은이 문제를 해결하기위한 임의의 방법 일뿐 아니라 fsck -f(물론 마운트 해제 된 상태에서) 수정하거나 필요에 따라 새 권한을 수동으로 설정하는 데 사용할 수있는 권한 예외를 만듭니다 .

다시 말하지만 이것은 이전에 비어 있지 않은 폴더였던 파일을 삭제하지 않아도되는 입증 된 방법입니다.


흥미로운 접근법 ...
eyoung100
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.