Chuyển đổi một thư mục thành tập tin hoặc một tập tin vào thư mục


15

Tôi muốn tạo một tập tin có tên test. Vô tình tôi chạy mkdir testthay touch test.

Có thể chuyển đổi testthư mục trong một tập tin có tên test?

Điều gì về việc chuyển đổi một tập tin có tên testvào một thư mục có cùng tên?


5
rm -f test && touch testngoại trừ điều này, tôi thực sự không biết
Kiwy

@Kiwy Vâng, nhưng tôi đang tưởng tượng một lệnh tích hợp được thiết kế để thực hiện nhiệm vụ này.
Ionică Bizău

Câu trả lời:


12

Điều này là không thể đối với bất kỳ Unix hoặc Linux nào tôi từng chạm vào.

Trong một số Unix cũ hơn, các thư mục là các tệp, được đánh dấu đặc biệt, nhưng vẫn là các tệp. Bạn đã từng có thể đọc một thư mục với catSunOS, ví dụ. Rất nhiều hệ thống tập tin hiện đại có thể có các thư mục dưới dạng cây B + hoặc một số cấu trúc dữ liệu trên đĩa khác. Vì vậy, biến một tập tin thành một thư mục hoặc ngược lại sẽ luôn yêu cầu xóa và tạo lại với cùng tên.


1
Hấp dẫn. Nếu không ai đi kèm với một giải pháp tôi sẽ đánh dấu câu trả lời này. :-)
Ionică Bizău

5

Không có không có lệnh như vậy bởi vì sẽ hoàn toàn không có điểm nào trong đó. Câu hỏi của bạn giống như yêu cầu một cách để biến một hộp thành một hình chữ nhật phẳng. Bạn sẽ làm gì với những thứ trong hộp (thư mục)? Làm thế nào hình chữ nhật tương ứng với hộp nó đến từ?

Các tập tin và thư mục phục vụ các chức năng hoàn toàn khác nhau. Mặc dù một thư mục thực sự là một tệp trong các hệ thống * nix, nhưng nó chỉ áp dụng cho các phần bên trong của hệ thống chứ không áp dụng cho những gì bạn, người dùng, xem. Vì vậy, chuyển đổi một tập tin thành một thư mục, hoặc ngược lại, sẽ luôn liên quan đến việc xóa tập tin và tạo thư mục. Điều tốt nhất bạn có thể hy vọng sẽ là sử dụng cùng một nút nhưng một lần nữa, không có nhiều điểm trong đó.


Nói rằng không có điểm cho nó là ý kiến ​​của bạn, không phải là một thực tế texchnical.
Sridhar Sarnobat

@ user7000 bạn sẽ làm gì với nội dung của thư mục khi bạn "chuyển đổi" thành tệp?
terdon

Một hệ thống tập tin lưu trữ dữ liệu trong một cấu trúc cây. Trong khoa học máy tính, các nút cây là các nút lá có thể trở thành các nút bên trong khi bạn thêm con vào chúng. Và không, tôi sẽ không sử dụng cơ sở dữ liệu khi hệ thống tệp đủ.
Sridhar Sarnobat

2

Tạo một chức năng để làm những gì bạn muốn. ( bashhoặc giả định Bourne / POSIX khác như shell)

$ 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
$ 

Tôi cố tình sử dụng rmdirsẽ thất bại nếu adirkhông phải là một thư mục hoặc không trống (không -fbắt buộc). touchsẽ chỉ chạy nếu rmdirthành công.

Bạn có thể đặt định nghĩa hàm trong tệp tùy chỉnh shell của mình ( .bashrcfor bash).


@Stephane Chazelas Làm gì --?
X Tian

2
vì vậy --đánh dấu sự kết thúc của các cờ rmdirtouchbiết bất cứ điều gì qua nó là một tên tệp, ngay cả khi nó bắt đầu bằng -.
Kevin

2

Để những người thắc mắc tại sao bạn muốn làm điều này, hãy làm theo chủ đề này:

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

Rõ ràng là một lỗi trong phần sụn đã lật bit trong mục nhập thư mục của tệp, khiến HĐH nghĩ rằng đó là một thư mục thay vì một tệp.

Trong khi tôi không có bộ định tuyến Linksys trong câu hỏi, một cái gì đó đã thay đổi tất cả các tệp .jpg của tôi thành các thư mục trống. Nếu có cách nào đó để lật bit (hoặc bất cứ điều gì) nói rằng mục nhập thư mục NTFS là thư mục so với tệp, tôi muốn biết về nó.

Một trong những giải pháp trong chuỗi dài 2 năm đó cho biết nếu ổ cứng chứa các thư mục đã sử dụng được kết nối với máy Mac chạy OS / X, Mac sẽ xem lại chúng dưới dạng tệp và chúng có thể được sao chép vào một thư mục trên Mac. Tôi không có máy Mac để dùng thử, vì vậy nếu có ai biết cách lật ...


1

Đầu tiên, lấy quyền truy cập vào thiết bị đầu cuối và thực thi ls -al filevới tệp là tệp bạn muốn chuyển đổi trở lại vào thư mục THỰC TẾ. Nếu có tệp và thư mục con được liệt kê, điều đó có nghĩa là "tệp" của bạn trước đây là thư mục có nội dung thực và bạn có thể tiếp tục:

Hành hình:

sudo chmod 700 /

HOẶC LÀ

sudo chmod 700 file

Khởi động lại hệ thống và lấy lại quyền truy cập thiết bị đầu cuối và thực hiện:

sudo chmod 744 /

HOẶC LÀ

sudo chmod 744 file

HÃY NHỚ: "tập tin" nên được thay thế bằng tập tin bạn muốn chuyển đổi trở lại vào thư mục THỰC TẾ.

Đây chỉ là một cách tùy ý để giải quyết vấn đề này nhưng nó tạo ra sự bất thường về quyền mà bạn có thể sử dụng fsck -fđể khắc phục (tất nhiên là không gắn kết) hoặc đặt thủ công các quyền mới khi cần.

LẠI, đây chỉ là một cách đã được chứng minh để tránh phải xóa tệp trước đây là một thư mục không trống.


Cách tiếp cận thú vị ...
Eyoung100
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.