Переместите список файлов в список местоположений

Эта команда awk работает нормально.

awk '{print "curl $dirnamer|" $0;}'

Или сделайте это с переменной раньше:

sed 's/\/b/\\b/g' | sed 's/\/t/\\t/g'
0
29.11.2018, 16:41
3 ответа

Дополнение к ответу @Kusalananda:

Вы можете сделать его универсальным с помощью функции:

mv_files() {

  local args=("$@")
  local num_args=${#args[@]}

  if [ $(bc <<< "$num_args%2") -ne 0 ]; then

    echo "Number of arguments must be a multiple of 2."
    return 1

  else

    num_files=$(bc <<< "$num_args/2")
    tmpdir=$(mktemp -d -p.)
    for (( i=0;i<num_files;i++ )); do
      local n=$(bc <<< "$i+$num_files")
      mv "${args[$i]}" "${tmpdir}/${args[$n]}"
    done

    mv ${tmpdir}/*.
    rmdir ${tmpdir}
    echo "Done."

  fi
}

А потом запускаешь вот так:

mv_files a.txt b.txt c.txt b.txt c.txt a.txt

или как вы это сделали:

mv_files./{a.txt,b.txt,c.txt}./{b.txt,c.txt,a.txt}

или

old=( a.txt b.txt c.txt )
new=( b.txt c.txt a.txt )

mv_files "${old[@]}" "${new[@]}" 
1
28.01.2020, 02:23
Tried by below method

aveen_linux_example ~]#  sed -n '/wrong name/p' filename | sed "s/|//g" | sed "s/ /\n/g"| sed '/^$/d'|awk '$1 !~  /wrong/ && $1 !~/name/{print $0}' > final.txt
[root@praveen_linux_example ~]# sed -n '/Correct name/p' filename| sed "s/|//g" |sed -r "s/\s+/\n/g"| sed '/^$/d'| awk '$1 !~/Correct/ && $1 !~/name/{print $0}' >final_2.txt


paste final.txt final_2.txt | awk '{print "mv" " " $1 " "  $2}'| sh
0
28.01.2020, 02:23

Обратите внимание, что

mv./{a.txt,b.txt,c.txt}./{b.txt,c.txt,a.txt}

расширяется до

mv./a.txt./b.txt./c.txt./b.txt./c.txt./a.txt

до вызова утилиты mv. Поскольку имеется более двух операндов и поскольку последний операнд не является каталогом, вы получаете ошибку. Если бы последним операндом был путь к каталогу, это привело бы к перемещению всех файлов в этот каталог (, вы также получили бы некоторые ошибки из-за двойного указания некоторых файлов ).

Вместо этого перемещайте файлы по одному во временный каталог, при этом переименовывая их в правильные имена. Затем переместите их обратно.

mkdir t
mv a.txt t/b.txt
mv b.txt t/c.txt
mv c.txt t/a.txt
mv t/*.txt./
rmdir t

Для этого нет ярлыка, утилита mvможет переименовывать только один файл за раз.

2
28.01.2020, 02:23

Теги

Похожие вопросы