Коли я запускаю таку команду:
> mkdir some_dir
> find /foo/bar/ -name '*.csv' -print0 | xargs -0 mv {} some_dir
Я отримую сотні рядків, які говорять:
mv: target `/foo/bar/XX.csv` is not a directory
Чому? Я думав, що xargs виконає:
mv /foo/barXX.csv some_dir
для кожного find
знайденого файлу . Що відбувається? До речі, це з zsh
Оновлення:
Оновлення1:
Я намагався:
find /foo/bar/ -name '*.csv' -print0 | xargs -0 mv {} -t some_dir
але тоді я отримав кілька рядків типу:
mv: cannot stat `{}': No such file or directory
хоча я думаю, що команда правильно переміщує мої файли.
Оновлення2:
Мені, здається, не потрібен -t
варіант, коли ви користуєтеся mv
окремо. Наприклад
> touch file1.txt
> touch file2.txt
> mkdir my_dir
> mv file1.txt file2.txt my_dir
працює добре. Навіщо мені це потрібно -t
при використанні xargs
?