Это работает в Fish Shell
for file in *.jpg;
mv -n $file (basename $file _door.jpg).jpg;
end
Предполагая, что:
Папки, которые нужно скопировать, и их файлы находятся под /home/gcgm/myfolders Выходная папка /tmp/output-folderЕсли вам нужно скопировать все файлы в другую папку , вы можете сделать следующее:
mkdir /tmp/output-folder
cd /home/gcgm/myfolders
cp */* /tmp/output-folder
Значение */* in the this command cp / target`:
Папки, которые должны быть скопированы и их файлы находятся под /home/gcgm/myfoldersПредполагая, что:
Папки, которые нужно скопировать, и их файлы находятся под /home/gcgm/myfolders Выходная папка /tmp/output-folderЕсли вам нужно скопировать все файлы в другую папку , вы можете сделать следующее:
mkdir /tmp/output-folder
cd /home/gcgm/myfolders
cp */* /tmp/output-folder
Значение */* in the this command cp / target`:
Папки, которые должны быть скопированы и их файлы находятся под /home/gcgm/myfoldersПредполагая, что:
Папки, которые нужно скопировать, и их файлы находятся под /home/gcgm/myfolders Выходная папка /tmp/output-folderЕсли вам нужно скопировать все файлы в другую папку , вы можете сделать следующее:
mkdir /tmp/output-folder
cd /home/gcgm/myfolders
cp */* /tmp/output-folder
Значение */* in the this command cp / target`:
Папки, которые должны быть скопированы и их файлы находятся под /home/gcgm/myfoldersВ соответствии с вашим примером ваш целевой каталог не содержит цифр, в то время как все ваши исходные каталоги. Таким образом, вы можете просто использовать (GNU) cp, как показано ниже в родительском каталоге, в bash:
shopt -s dotglob #Enables matching hidden files with glob patterns
shopt -s globstar #Enables recursive traverse of directories
cp -t zPASTE_EVERYTHING_HERE *[[:digit:]]*/**/*
cp копирует -t zPASTE_EVERYTHING_HERE устанавливает целевой каталог *[[:digit:]]*/**/* сопоставляет каталоги, содержащие хотя бы цифру, пересекает их (на любой глубине тоже) и получает все. Выполнение всего в подоболочке, чтобы сохранить родительскую оболочку неповрежденной; из родительского каталога:
( shopt -s dotglob && shopt -s globstar && \
cp -t zPASTE_EVERYTHING_HERE *[[:digit:]]*/**/* )
Теперь, для любого произвольного имени каталога назначения, установите каталог как переменную GLOBIGNORE:
GLOBIGNORE=whatever_destination
Теперь , вы можете просто сделать:
cp -t whatever_destination */**/*
или вы можете использовать extglob:
shopt -s extglob #Should be already set on any interactive shell session
cp -t whatever_destination !(whatever_destination)/**/*
Дополнительная заметка:
[d14 ] Существует вероятность срабатывания функции ARG_MAX, если у вас много файлов / каталогов внутри исходных каталогов, в этом случае у вас есть два варианта: cp выполняет копирование [!d2 ] Используйте find:find . -mindepth 1 -maxdepth 1 -type d -not -name whatever_destination \
-name '*' -exec sh -c 'cp -rt whatever_destination "$1"/*' _ {} \;
В соответствии с вашим примером ваш целевой каталог не содержит цифр, в то время как все ваши исходные каталоги. Таким образом, вы можете просто использовать (GNU) cp, как показано ниже в родительском каталоге, в bash:
shopt -s dotglob #Enables matching hidden files with glob patterns
shopt -s globstar #Enables recursive traverse of directories
cp -t zPASTE_EVERYTHING_HERE *[[:digit:]]*/**/*
cp копирует -t zPASTE_EVERYTHING_HERE устанавливает целевой каталог *[[:digit:]]*/**/* сопоставляет каталоги, содержащие хотя бы цифру, пересекает их (на любой глубине тоже) и получает все. Выполнение всего в подоболочке, чтобы сохранить родительскую оболочку неповрежденной; из родительского каталога:
( shopt -s dotglob && shopt -s globstar && \
cp -t zPASTE_EVERYTHING_HERE *[[:digit:]]*/**/* )
Теперь, для любого произвольного имени каталога назначения, установите каталог как переменную GLOBIGNORE:
GLOBIGNORE=whatever_destination
Теперь , вы можете просто сделать:
cp -t whatever_destination */**/*
или вы можете использовать extglob:
shopt -s extglob #Should be already set on any interactive shell session
cp -t whatever_destination !(whatever_destination)/**/*
Дополнительная заметка:
Существует вероятность срабатывания функции ARG_MAX, если у вас много файлов / каталогов внутри исходных каталогов, в этом случае у вас есть два варианта:
cp выполняет копирование Используйте find:find . -mindepth 1 -maxdepth 1 -type d -not -name whatever_destination \
-name '*' -exec sh -c 'cp -rt whatever_destination "$1"/*' _ {} \;
В соответствии с вашим примером ваш целевой каталог не содержит цифр, в то время как все ваши исходные каталоги. Таким образом, вы можете просто использовать (GNU) cp, как показано ниже в родительском каталоге, в bash:
shopt -s dotglob #Enables matching hidden files with glob patterns
shopt -s globstar #Enables recursive traverse of directories
cp -t zPASTE_EVERYTHING_HERE *[[:digit:]]*/**/*
cp копирует -t zPASTE_EVERYTHING_HERE устанавливает целевой каталог *[[:digit:]]*/**/* сопоставляет каталоги, содержащие хотя бы цифру, пересекает их (на любой глубине тоже) и получает все. Выполнение всего в подоболочке, чтобы сохранить родительскую оболочку неповрежденной; из родительского каталога:
( shopt -s dotglob && shopt -s globstar && \
cp -t zPASTE_EVERYTHING_HERE *[[:digit:]]*/**/* )
Теперь, для любого произвольного имени каталога назначения, установите каталог как переменную GLOBIGNORE:
GLOBIGNORE=whatever_destination
Теперь , вы можете просто сделать:
cp -t whatever_destination */**/*
или вы можете использовать extglob:
shopt -s extglob #Should be already set on any interactive shell session
cp -t whatever_destination !(whatever_destination)/**/*
Дополнительная заметка:
Существует вероятность срабатывания функции ARG_MAX, если у вас много файлов / каталогов внутри исходных каталогов, в этом случае у вас есть два варианта:
cp выполняет копирование Используйте find:find . -mindepth 1 -maxdepth 1 -type d -not -name whatever_destination \
-name '*' -exec sh -c 'cp -rt whatever_destination "$1"/*' _ {} \;