Eu sei que isso tem alguns dias, mas não tenho certeza se os loops do shell são necessários, pois o comando sed pode ler o arquivo inteiro por conta própria, antes de usar algo como xargs para combinar todos os arquivos um único comando mv:
prev_dir=/cygdrive/c/Users/abhisek.samanta/Desktop/Table_scripts
new_dir=/cygdrive/c/Users/abhisek.samanta/Desktop/New
cd ${prev_dir}
sed 's/\r$//' filelist | xargs mv -t $new
Aqui, usando os diretórios fornecidos, e o comando sed
que você encontrou funciona, então, como tudo é canalizado para xargs
, ele adicionará cada linha do pipe ao comando mv
, que pode levar vários arquivos e, em seguida, mova todos eles para o diretório fornecido com o -t
flag
$ > cat movefile.sh
new="$(pwd)/dir1/"
sed 's/\r$//' filelist | xargs mv -t $new
$ > cat -v filelist
file1^M
file2^M
file3^M
$ > touch file{1,2,3}
$ > ls -l
total 16
drwxr-xr-x 2 grownups users 4096 Jan 1 22:29 dir1
-rw-r--r-- 1 grownups users 0 Jan 1 22:30 file1
-rw-r--r-- 1 grownups users 0 Jan 1 22:30 file2
-rw-r--r-- 1 grownups users 0 Jan 1 22:30 file3
-rw-r--r-- 1 grownups users 22 Jan 1 22:26 filelist
-rwxr--r-- 1 grownups users 61 Jan 1 22:29 movefile.sh
$ > ls dir1/
$ > ./movefile.sh
$ > ls -l dir1/
total 0
-rw-r--r-- 1 grownups users 0 Jan 1 22:30 file1
-rw-r--r-- 1 grownups users 0 Jan 1 22:30 file2
-rw-r--r-- 1 grownups users 0 Jan 1 22:30 file3
$ >