У меня есть файлы и каталоги с одинаковым суффиксом (от 0 до 310). и я хочу скопировать файл (0)
в каталог (0)
, файл (10)
в каталог (10)
и перейти по файл (310)
в каталог (310)
.
Есть ли способ скопировать их все одновременно?
Перебрать файлы и переместить их в соответствующие каталоги,
for FILE in *; do
if [[ -f "$FILE" ]]; then
echo mv "$FILE" "dir${FILE##file}";
fi
done
if [[ -f "$FILE" ]]; then
, проверьте $FILE
, если это файл -f
, а не каталог -d
. ${FILE##file}
, (вырезают -вверх -до -последний -префикс )удаляет префикс file
из имени файла и сохраняет только числовую часть. echo
для пробного прогона, чтобы иметь реальное движение. Пример вывода:
file0 --> dir0
file1 --> dir1
file2 --> dir2
file3 --> dir3
Обновление:Если ваше имя файла имеет суффикс, например file##.xyz
, вы можете использовать скрипт следующим образом:
for FILE in *; do
if [[ -f "$FILE" ]]; then
dname="${FILE##file}";
echo mv "$FILE" "dir${dname%.inp}";
fi
done
Эта ${dname%.inp}
часть кода (вырезает -вверх -до -первый -суффикс )удаляет .inp
с конца имени файла, часть ${FILE##file}
которого уже удалена его префикс file
перед,поэтому будет производиться только числовая часть.
Или даже вы можете использовать следующее.
for FILE in *; do
if [[ -f "$FILE" ]]; then
echo mv "$FILE" "dir${FILE//[^0-9]/}";
fi
done