Взломанный прочь Cplusplus.com
std::string choppa(const std::string &t, const std::string &ws)
{
std::string str = t;
size_t found;
found = str.find_last_not_of(ws);
if (found != std::string::npos)
str.erase(found+1);
else
str.clear(); // str is all whitespace
return str;
}
Это работает на пустой случай также.:-)
Это должно работать на Вас:
sed 's/"//g' files.csv | while IFS=, read orig new; do mv "$orig" "$new"; done
Объяснение:
sed 's/"//g' files.csv
: удалите кавычки IFS=,
: разделите вход по телефону ,
while read orig new; do ... done
: Это считает каждую входную строку, разделит ее на значении $IFS
(здесь запятая) и сохранит 1-е поле как $orig
и остальные как $new
. mv "$orig" "$new"
: это переименует файлы согласно просьбе. , Если Ваш файл только содержит имена файлов (как [1 110]) и никакие пути (не /home/take2/orig.jpg
или подобный), команда выше будет только влиять на файлы в Вашем текущем каталоге. Так, необходимо открыть терминал, cd
к целевому каталогу и выполнить его туда.
Тест сначала:
Для тестирования этого можно сделать пробный прогон сначала путем печати команд, которые будут выполнены, на самом деле не выполняя их:
sed 's/"//g' files.csv | while IFS=, read orig new; do echo mv "$orig" "$new"; done