Прежде всего, код операции не меняется, никогда.
Если у вас нет инсайдерской информации о «микрокоде» 6502, вы не сможете узнать точную реализацию. Таблица данных только дает вам информацию о выполняемой операции, но редко дает информацию о том, как именно это выполняется. Можно только догадываться.
Одно из таких предположений:
Соответствующий бит регистра кода состояния (нормальный или инвертированный в зависимости от инструкции) маскирует операнд команды перехода в ноль, если переход не должен быть взят. 116]
(теперь возможно замаскированное) 8-битное смещение со знаком добавляется в ПК.
Поместите следующее в ваш .bashrc
shopt -s extglob
Он расширяет регулярные выражения. Затем вы можете переместить все файлы, кроме одного, с помощью
mv !(fileOne) ~/path/newFolder
Обратите внимание, что при копировании каталогов прямая флеш-память не может использоваться в имени, как было замечено в потоке Почему extglob, кроме прерывания кроме условия? :
cp -r !(Backups.backupdb) /home/masi/Documents/
, поэтому Backups.backupdb /
здесь неверно до отрицания, и я не буду использовать его ни в перемещающихся каталогах из-за риска неправильного использования, а затем перетаскивания с другими командами и Возможны и другие исключения.
Если Вы используете удар и имеете extglob
набор опции оболочки (который обычно имеет место):
mv ~/Linux/Old/!(Tux.png) ~/Linux/New/
Я пошел бы с традиционной находкой и xargs путем:
find ~/Linux/Old -maxdepth 1 -mindepth 1 -not -name Tux.png -print0 |
xargs -0 mv -t ~/Linux/New
-maxdepth 1
делает его не поиском рекурсивно. Если Вы только заботитесь о файлах, можно сказать -type f
. -mindepth 1
заставляет его не включать ~/Linux/Old
сам путь к результату. Работы с любыми именами файлов, включая с теми, которые содержат встроенные новые строки.
Один комментарий отмечает что mv -t
опция, вероятно, расширение GNU. Для систем, которые не имеют его
find ~/Linux/Old -maxdepth 1 -mindepth 1 -not -name Tux.png \
-exec mv '{}' ~/Linux/New \;
Следующее не составляет 100%, гарантируемых метод, и нисколько не должно быть предпринято для сценариев. Но несколько раз это достаточно хорошо для быстрого интерактивного использования оболочки. Шарик файла файла как
[abc]*
(который будет соответствовать всем файлам именам, запускающимся с a, b или c) может отрицаться путем вставки "^" символа сначала, т.е.
[^abc]*
Я иногда использую это для того, чтобы не соответствовать "lost+found" каталогу, как, например:
mv /mnt/usbdisk/[^l]* /home/user/stuff/.
Конечно, если существуют другие файлы, запускающиеся с l, я должен обработать их впоследствии.
Быстрый путь состоял бы в том, чтобы изменить имя файла смокинга так, чтобы Ваша команда перемещения не соответствовала.
Например:
mv Tux.png .Tux.png
mv * ~/somefolder
mv .Tux.png Tux.png
Для удара, sth ответ корректно. Вот является zsh (моя предпочтительная оболочка) синтаксисом:
mv ~/Linux/Old/^Tux.png ~/Linux/New/
Требует EXTENDED_GLOB
опция оболочки, которая будет установлена.
mv `find Linux/Old '!' -type d | fgrep -v Tux.png` Linux/New
Списки команд находки все регулярные файлы и команда fgrep отфильтровывают любой Tux.png. Обратные галочки говорят mv перемещать получающийся список файлов.
Как насчет Вас перемещают все в папку и затем просто кладут обратно Tux.png?
Я не могу думать ни о каком синтаксисе оболочки для высказывания "всего кроме..." бесцеремонно.