Khi tôi chạy lệnh sau:
> mkdir some_dir
> find /foo/bar/ -name '*.csv' -print0 | xargs -0 mv {} some_dir
Tôi nhận được hàng trăm dòng nói:
mv: target `/foo/bar/XX.csv` is not a directory
Tại sao? Tôi nghĩ rằng xargs sẽ thực thi:
mv /foo/barXX.csv some_dir
cho mỗi tập tin find
tìm thấy. Chuyện gì đang xảy ra vậy? Nhân tiện, đây là với zsh
Cập nhật:
Cập nhật1:
Tôi đã thử:
find /foo/bar/ -name '*.csv' -print0 | xargs -0 mv {} -t some_dir
nhưng sau đó tôi nhận được một vài dòng như:
mv: cannot stat `{}': No such file or directory
mặc dù tôi nghĩ rằng lệnh đang di chuyển các tập tin của tôi một cách chính xác.
Cập nhật2:
Tôi dường như không cần -t
tùy chọn khi sử dụng mv
một mình. Ví dụ
> touch file1.txt
> touch file2.txt
> mkdir my_dir
> mv file1.txt file2.txt my_dir
hoạt động tốt Tại sao tôi cần -t
khi sử dụng xargs
?