Tôi muốn tìm một tập tin và sau đó vào thư mục chứa nó. Tôi đã thử find /media/storage -name "Fedora" | xargs cd
nhưng tất nhiên, tôi is not a directory
lỗi.
Làm cách nào để vào thư mục mẹ của nó bằng lệnh một dòng?
shopt -s globstar
, bạn có thể cd /media/storage/**/Fedora
, nhưng điều đó không dừng đánh giá toàn cầu ở trận đấu đầu tiên (vì vậy nó chậm hơn giải pháp của Steeller. Để sử dụng tương tác, những gì tôi thường làm là với chuột và sao chép / dán tên thư mục, (và alt + backspace khi cần để loại bỏ các thành phần đường dẫn mà tôi không muốn), nhưng nếu bạn làm điều này nhiều thì tôi đoán một hàm shell có thể đáng để thực hiện.
xargs cd
không thể làm việc. cd
chỉ có thể hoạt động như một shell dựng sẵn, bởi vì nó phải sửa đổi bối cảnh của chính shell. Không có cách nào một xargs
quá trình trẻ em có thể làm điều đó. IDK nếu đó là những gì bạn có nghĩa là "tất nhiên", hoặc nếu đường dẫn find
in có chứa khoảng trắng, được phân chia bởi xargs kể từ khi bạn không sử dụng -d \n
hoặc bất cứ điều gì. Hoặc find -exec {} \;
.
cd
như vậy cd
là một bash được xây dựng, nếu cd
là một lệnh riêng biệt, thì nó sẽ thay đổi thư mục (của chính nó), và sau đó thoát (trả bạn về shell, ở trạng thái như trước, không thay đổi dir).